1 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:41:03.61 ID:rni/4bMj0.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part60 https://mevius.5ch.net/test/read.cgi/tech/1552736349/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
382 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 01:04:45.98 ID:Rr62XR8Vx.net] ワークシートのイベントに重めの処理を書いている場合、シート側のイベントを避けるためユーザーフォームで出入力制御や演算を処理させることはある
383 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 08:43:02.61 ID:8P1bQTIM0.net] 入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。 Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。
384 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:44:28.89 ID:CE2aKfrCH.net] 初心者レベルの知識で長いことVBAいじってる者なんだが、 functionプロシージャって使わなくない? 普通のsubしか使ったことない どんな時に便利なの?
385 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:47:42.25 ID:rhAlx8Ij0.net] >>384 値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い むしろfunctionが普通なのだ vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね
386 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:55:56.33 ID:JWvhlEsx0.net] Findを利用したコードについて教えて下さい。 書籍、サイトで掲載されていたコードを利用し、少し変えたものです。 Findメソッドを使ってC列の”たろう”を検索します。 探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。 Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。 どのように違うのか、ご指導お願いします。 ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです A B C D E F G 1 日付 売上 担当者 000 AAA たろう 2 000 AAA たろう 333 DDD たろう 3 111 BBB はなこ 4 222 CCC たかし 5 333 DDD たろう 6 444 EEE はなこ 7 555 FFF くみこ
387 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 09:56:25.54 ID:JWvhlEsx0.net] 386のつづき Sub Find() Dim temp As Range, tempAddress As String, i As Long With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2) Set temp = .Find(what:=“たろう”) If Not temp Is Nothing Then tempAddress = temp.Address i = Cells(Rows.Count, "E").End(xlUp).Row Do temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E") Set temp = .FindNext(temp) Loop While temp.Address <> tempAddress End If End With End Sub Sub copy() Range("A:G").Clear Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1") End Sub
388 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 10:10:54.71 ID:CE2aKfrCH.net] >>385 うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ subの中に入れちゃえば良くない? コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと? そういやfunctionを関数みたいに使う場合もあると聞いたな
389 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 10:32:00.95 ID:P/fMeUQp0.net] >>384 >>385 意見に賛成だが少し付け加えます。 基本的にsubにしろfunctionにしろ長くだらだら作らない 出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする その時に値を返せるfunctionの方が圧倒的に有利 初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ
390 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 11:24:47.87 ID:aRCJr/ZnM.net] >>384 ネタでしょ? モドリッチがない方が便利だなんて、そんな訳ないじゃん
391 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 11:26:30.05 ID:CE2aKfrCH.net] >>389 あーその説明で分かった ありがとう たしかに今までは、動けばいいやで作ってたからコードが長くなってた 顧客コードから各データを検索する時なんか、 Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value みたいなコードを10行とか書いてたわ
392 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:23:13.41 ID:1q3vxt7ga.net] OutlookのVBAもここで可でしょうか? 違ったら誘導お願いします 上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です 私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?
393 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:47:38.41 ID:i1bbppKtM.net] >>392 ウィルスメールの作成方法きいてる様なもんだなw
394 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 12:51:48.37 ID:Z4r31YmpM.net] >>392 まずは社内でOLのセキュリティ設定がどうなのか。 ザルならやりようはいくつもあるが、ガチガチなら選択肢は少ない
395 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:44:15.47 ID:P/fMeUQp0.net] >>392 まあ、バカ上司をサポートするのと バカ上司の影響をサポートするのと どちっがしたいんだ?
396 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:45:21.90 ID:8P1bQTIM0.net] >>388 VBA初心者にありがちな意見だね。 プログラムを組む時の考え方が全く違う。 組める奴なら最初から構造的に考える。 動きゃ良いなどと考える奴はいない。
397 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:48:09.91 ID:8P1bQTIM0.net] >>392 マクロでやらなくても承認ボタンを追加する機能があった筈だが。
398 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 13:50:35.37 ID:i1bbppKtM.net] > VBA初心者にありがちな意見だね。 はい、きょうもマウント取りたい人が来ましたよ
399 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 14:01:27.19 ID:8P1bQTIM0.net] >>391 >>389 の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。 その方が圧倒的に楽だから。 あと、例に挙げてるコードは良くない。 ブックやシートの省略はバグの元。
400 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 14:03:33.28 ID:8P1bQTIM0.net] >>398 マウントも何も、明らかに初心者なんだから仕方ないだろ
401 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 14:18:44.11 ID:rhAlx8Ij0.net] > VBA初心者にありがちな意見だね。 この部分は必要なかったんだよなぁ
402 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 14:34:43.00 ID:8P1bQTIM0.net] >>401 必要なんだが。
403 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 15:27:43.49 ID:m2eXkVaQM.net] 初心者お断りな質問スレが存在した…?
404 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 15:33:18.00 ID:rhAlx8Ij0.net] >>402 君はそう書かないと回答できないのか、なるほど 興味深い
405 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 15:57:40.29 ID:JWvhlEsx0.net] >>386 >>387 話題を気にせずに、切り込んだ形で質問をしてしまいました。 ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。 VBAなんでも質問スレで聞いてみます。 お邪魔しましたm( _ _ )m
406 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 15:58:05.43 ID:8ZgSX7bEF.net] >>404 構造的に考えるべきという意味付けの為に必要。 初心者にありがちだということで、初心者からレベルアップした方が良いということになる。
407 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 16:01:17.83 ID:8ZgSX7bEF.net] >>405 別に迷惑でも何でも無い。 元々、初心者の質問に難癖を付けた奴が悪いと思ったから>>355 を書いたんだが、内容を見ずに変に絡んでくる奴が出てきただけのこと。
408 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:23:49.73 ID:PIv3udRAr.net] i=の行をloopの中に入れる
409 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:25:13.81 ID:PIv3udRAr.net] その上のtempaddressも
410 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:29:24.54 ID:Bg5LHkgbH.net] マウントしてると誤解を招くような 会話しかできない奴は能力低い奴多い 他人の意見も聞かないしね。 傲慢が後に返り討ちにあう
411 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:33:26.76 ID:C7Ijh9EKa.net] >>397 こんなんあったんですね! 自分で作るなら他にも機能足してたかもしれないけど、これなら簡単で皆で使えるからこれでいきます ウイルスメールの作成方法……確かに……
412 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 19:06:09.82 ID:+01nmcZGF.net] >>410 誤解を招く前に、プライドに触ったのか碌に内容読まずに絡む奴の方がよっぽど問題だと思うが。
413 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 19:42:52.66 ID:ID0apHa80.net] ところでここは「Exce VBA」の質問スレ
414 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 19:55:29.19 ID:P/fMeUQp0.net] >>410 マウントしたい奴と思ったら絡むなよ 意味もなく伸びrだけ
415 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 22:28:38.54 ID:6NK7Ep/b0.net] >>384 functionなら1行で書ける! と思ったけど、よく見たらどっちも2行かかるな。 Dim A A = function() Dim A sub(ByRef A) functionのメリットって何だろ? 1個しか返せないし。
416 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 22:45:21.26 ID:g3Ue34fJ0.net] >>415 馬鹿はいい加減黙れよ
417 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 22:46:58.82 ID:exe6lUi60.net] >>415 教えてほしいなら教えてくれと言えば良い 君以外全員わかってるぞ
418 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:03:25.05 ID:sz8y6/Um0.net] >>416 容赦なくてワロタw >>415 If func(x) Then とか func1(func2(a), func3(b)) とか
419 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:15:31.12 ID:MN8nEIAEd.net] >>415 1個しか返せないといっても工夫の問題。 配列で返せば実質何個でも返せるし、Collectionで返すこともできる。 クラスインスタンスを返すなんてことも出来る。 どれも普通にやることだよ。 何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。 初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。 >>416 >>417 罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。
420 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:18:36.46 ID:MN8nEIAEd.net] >>418 むしろ Function Hoge(Arg() As String) As String() の方が適切かな。 或いは Function Hoge(Arg() As String) As Collection とか。
421 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:45:10.83 ID:sz8y6/Um0.net] >>419 AddressOf で関数を返すことすら出来るのだ
422 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:58:45.95 ID:0rD99vo/0.net] IF Func() Then とか Loop Until Func() なんてのがSubでは代用しにくい使い方だな (できないとは言わないが) むしろ普通の数式で A = Func1() + Func2() + Func3() みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう
423 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 00:02:34.60 ID:S0wmSPvZ0.net] 2年ぐらい前にもSubとFunctionに違いなんかないと言い張る粘着がいたのを思い出した
424 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 00:03:33.14 ID:6UUzdaAE0.net] BASICなんだからGOTOだけで十分
425 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 00:47:16.25 ID:aQ2xiGWFd.net] >>421 おう、ここで初めて高度な話を見た。
426 名前:デフォルトの名無しさん [2019/05/29(水) 03:04:42.46 ID:1woLKBVkM.net] ・Sub ・返り値のないFunction この違いは何ですか?
427 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 04:29:34.43 ID:WducifPVa.net] subじゃ1個も値返せないじゃん
428 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 05:02:37.42 ID:E4T3mNp50.net] 戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う 昔はsubばかりで書いてた subは単体で実行できるけどfunctionは単体では実行できないという違いがある functionは他から呼び出さないと実行できないという意味でね。 ここからは俺の好みみたいなもんだけど、 ボタンに直結してるようなエントリーポイント的なものは subで書いて、それ以外、特に引数を受けとって処理するものは 単体では実行できないことを明確にする意味で全てfunctionにしてる そう論理的で整合性のある区分というわけではないんだけど。
429 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 08:46:31.68 ID:WZbm0MMEM.net] >>428 単体で実行できるかどうかはSub/Function の差じゃなくて、引数を取る/取らないの差じゃなかったっけ?
430 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 08:57:09.71 ID:dT9QfEjx0.net] >>429 正解 Sub foo() '単体実行可能 End Sub Sub bar(baz) '単体実行は出来ない End Sub
431 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 08:58:24.42 ID:dT9QfEjx0.net] あと、実行可能かどうかはpublic/privateで切り分けるべきだろう
432 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:10:25.71 ID:QQeifizk0.net] セルに式として関数を入力して呼べるFunctionと呼べないSub
433 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:17:16.17 ID:dT9QfEjx0.net] >>432 あれ、じゃあ何のためにsubって存在するんだ return 0しなくていいってだけ?
434 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:30:42.49 ID:dT9QfEjx0.net] 基本はfunction スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){} 戻り値や引数のありなしでは切り分けない と考えると自然と思うんだけど、どうだろう この考えだと、private subは使うべきじゃないって事になる
435 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 10:59:47.52 ID:bJuQUiqr0.net] 別に良いんだよ何を使おうと、まあ好きにすればって程度 まあ、ただ論理的に考えずごみを量産するやつはいるな
436 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:30:55.13 ID:zbMbGE8SM.net] >>426 戻り値のないFunctionは存在しない 戻ってきた値を無視することができるだけ つまり戻り値を格納するためにメモリを必ず使うから、Subと比較して速度とメモリ効率の2点で不利になる
437 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:31:54.96 ID:WZbm0MMEM.net] Excel長老の話って知ってる?
438 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:32:51.36 ID:WZbm0MMEM.net] >>436 メモリ効率ってネタだよね?
439 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:39:17.00 ID:zbMbGE8SM.net] >>433 今から40年以上前、それまでのシーケンシャルなプログラムでは能率が悪いから構造化しようという話しが出て、その時に提唱されたのが「手続き(Sub)」と「関数(Function)」という概念 しかし、教育用として作られたPascalという言語では忠実に実装されたけど、C言語には関数しか用意されなかったし、その後に登場したJavaも関数しかない 結局は言語を設計した人のリテラシーというか、単なる好みで決まったようなもん 今でもたくさんの言語が乱立してるのは、結局はみんな「ぼくの考えたさいきょうのげんご」が作りたいだけと思って、あながち間違いじゃない
440 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:41:11.71 ID:zbMbGE8SM.net] >>438 ネタじゃないよ リカーシブなプログラムを書いてみればすぐわかる VBAでもFunctionは呼び出すたびにヒープを最低4バイトずつ消費するから、再帰の最大回数が少ないのは簡単な実験ですぐに確認できる
441 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:48:47.33 ID:WZbm0MMEM.net] >>440 「ヒープ」ってネタだよね?
442 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:53:59.73 ID:dT9QfEjx0.net] >>439 ありがとう!そういう事か sub便利だけど、便利過ぎてかなり変な事になってるね subから呼び出すのはfunctionと決めていれば良いんだろうけど、 でもsubからsub呼び出す事もあるから・・・ 結局subって意味なくね? C言語のsub無しが正解のような気がする。 >>441 なんでネタと思うんだ?
443 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 11:58:48.77 ID:zbMbGE8SM.net] 簡単な実験 Funcの方がメモリをたくさん消費するから繰り返せる回数が少ない データキャッシュも有限なリソースだから、どちらでもいい時はFuncの方が不利 Sub sub_test() test_sub (1) End Sub Sub func_test() test_func (1) End Sub Sub test_sub(n) n = n + 1 Debug.Print n; test_sub (n) End Sub Function test_func(n) n = n + 1 Debug.Print n; test_func (n) End Function
444 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 13:23:20.90 ID:AfH1iVf/M.net] Selenium+vbaを使って ChromeでWebページをPDF保存することは可能でしょうか?
445 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 13:29:26.76 ID:dT9QfEjx0.net] >>444 vbaは不要っぽい takuya-1st.hatenablog.jp/entry/2017/06/21/140000 記事が古いから一度試したほうが良いと思う
446 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 13:43:28.26 ID:aQ2xiGWFd.net] >>442 だから構造的に考えて意味的にFunctionが適するかSubが適するかを選択するんだ。 意味的にというのは人間の感覚にとって合った方を採用すべきということ。 Cだってvoidがあるじゃねーの。 無理矢理1を返すとかすれば戻り値が絶対に必要な言語設計だってできた筈。 なんでvoidがあるかといえば、やっぱり意味的に戻り値無しが人間にとってピッタリ来ることがあるからだと思うが。
447 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 15:03:19.55 ID:eVQzoh+sa.net] 処理結果をpublicで判断するよりは 値を返すほうが使いやすい
448 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 17:40:58.36 ID:S0wmSPvZ0.net] プログラムを一人で作って自分だけが永遠に保守するなら好きなように作ればいい 大規模なアプリをチームで作ったり、他人が修正したりする時には間違いを起こさないようにルールを決める必要があって、 経験上、カプセル化した方が結果的に安全で能率がいいということになっている そのための手法の一つが変数のスコープを狭くすること、グローバル変数は使わないこと、なんだな だから結果はどこかの変数に入れるんじゃなくてFunctionで返すんだよ 複数の値を返したいなら設計を見直すべきで、構造体を使うか、1つずつFunctionを分けるか考える
449 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 18:50:10.49 ID:b/xKBA/BM.net] >>445 SeleniumではなくSeleniumBasic の間違えでした。 ごめんなさい。
450 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 18:57:16.16 ID:dT9QfEjx0.net] グローバル汚染はマジでエグいからな 「name」「mail」この変使われてたら超めんどい >>449 Selenium使えばいいんじゃない
451 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 19:33:05.85 ID:gbtQDfh8M.net] seleniumってもう使い物にならなくなってなかったっけ
452 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 00:50:17.75 ID:oM5Ks3kV0.net] >>440 ヒープとスタックの違い理解してる?
453 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 03:19:10.04 ID:1qsenVBka.net] byref もあるしな
454 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 08:21:00.17 ID:oyMl0bcF0.net] >>452 それって日本昔話に載ってる? 今も気にすること?
455 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 12:02:16.59 ID:fCKFoHR/M.net] 使うスタック量によって再帰での有利不利って理屈の上ではあるだろうけど 現実的な意味ってあるの? 条件によってスタックオーバーフローする「かもしれない」プログラムに対して 引数や返り値を考慮とか再帰深度に気を使うとか、ちょっとVBAで考えられないんですけど
456 名前:デフォルトの名無しさん [2019/05/30(木) 12:25:00.74 ID:0nKLhIYFr.net] >>454 SubとFunctionでメモリ効率の違い考慮するレベルなら
457 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 12:31:21.82 ID:NTWA4E5yM.net] >>454 別に気にしなくてもいいけど>>440 みたいなツッコミ入れるならちゃんと理解してないと恥をかく
458 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 15:33:21.51 ID:oyMl0bcF0.net] >>457 おれも、昔話書きたくなったレベル z80とか8080とかな8086なんて凄いよな
459 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:56:24.47 ID:86kk1xI3a.net] ここできいていいのか分かりませんがマクロの組み方で教えてください 「=5月シートA1」 「=5月シートA2」 みたいに引っ張っているセルを 「=6月シートA1」 「=6月シートA2」 みたいに変えるマクロを組みたいんですが それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか? 理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。 説明が下手ですみません。
460 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:04:11.68 ID:1nLCMVmfr.net] 今月=month(date) activesheet.range("a1").resize(5).formula="="&今月&"!a1"
461 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:12:37.62 ID:3bWSKYGBM.net] >>459 5月シートをコピーして6月シートにする。 5月を6月に文字列全置換え 処理日によって月を自動判定でもいいが、フォームで値を確認、修正後に実行の方がいいんじゃないかな
462 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:18:06.10 ID:86kk1xI3a.net] >>460 すみません初心者なので詳しくは分かりませんが、今の月を参照するセルを作り、それをコピペするように組めばいい感じでしょうか。 間違ってたらすみません。 >>461 今まではそうやっていたのですが、それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。
463 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:37:14.94 ID:/EJeltR2r.net] >>462 今月の月を取得して、a1からa5までの数式を置き換えるイメージです。 携帯からなので試せていませんが・・・
464 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:38:13.64 ID:86kk1xI3a.net] >>463 ありがとうございます。 試してみます
465 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:41:48.72 ID:S1ohEoHj0.net] >>464 文字列の検索や置換は数式にも有効 5月を6月に置換すればいい VBAは必要ない
466 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:49:45.60 ID:vA8HeCKe0.net] >>459 他の処理はともかく数式に関してはマクロいらない =INDIRECT(MONTH(NOW())&"月!A1")
467 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:55:45.24 ID:vA8HeCKe0.net] 間違えたわ、こうだわ =INDIRECT(MONTH(NOW())&"月!A"&ROW(A1))
468 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 10:21:23.92 ID:iXFRocgY0.net] なんか、今月にこだわる人多いが説明だと選んだ月のシートからデーターを 持ってきたいだけだろ、勿論INDIRECTを使うことでマクロを使う必要はない 例えば、値を参照するシートとのA1セルに入力規制で1月〜12月を選択して =INDIRECT($A$1 & "!A" & ROW(A1)) でいいだろ
469 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 10:48:51.98 ID:xVkqny4q0.net] >>468 > それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?
470 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:09:05.87 ID:iXFRocgY0.net] >>469 自動だったらA1セルをNow()にして表示形式を 月だけにすればいいだけだろ 各セルに設定する関数は簡素に共通化する
471 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:20:16.63 ID:xVkqny4q0.net] >>470 > なんか、今月にこだわる人多いが
472 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:34:43.20 ID:iXFRocgY0.net] >>471 今月か選択なんてExcelをちょろって知ってればどっちでもいいんだよ 1っか所変えただけで要は1っか所を変えただけでその月に対応すればよいだけ こんなのマクロなんか書いたら笑えるレベル
473 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:36:26.16 ID:iXFRocgY0.net] あら〜ダブって入ったわ すまぬの
474 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:48:24.92 ID:fWZN/ECyM.net] なんかVBA使わずにワークシート関数使えっていうコンセンサスでもあるの? 思い込みと違う?
475 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:53:29.26 ID:iXFRocgY0.net] >>459 お題は >理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。 だけどな、マクロを使わないと気が済まないやつっているのかな
476 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 11:57:27.72 ID:iXFRocgY0.net] >>474 これでマクロを作るやつのマクロを参考にしたいな ぜひ作ってね
477 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:02:31.59 ID:kMeHCJPt0.net] >>474 数式だけならファイル形式をxlsxのままにできて安全 同じ機能なら数式で済ませた方が良いだろう 家計簿ならどっちでも良いのは間違いない
478 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:17:34.40 ID:iXFRocgY0.net] まあなんだな、$A$1この書き方って絶対参照だが良くないんだよな 普通はそのセルに名前を付けてその名前で参照する 例えば「設定月」みたいな名前ね
479 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:21:40.48 ID:UKwhkiwBr.net] VBAのスレでマクロつかうなとか(笑)
480 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:23:22.93 ID:xVkqny4q0.net] >>472 >>462 > それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。
481 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:27:21.46 ID:wdWzuIo7p.net] シートを左のものからきっちり順に印刷する(印刷指示を出す)vbaありませんか? スプール云々はプリンターの詳細設定弄れなくなってるのでvbaでどうにかなればしたいのですが・・
482 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 12:27:47.02 ID:iXFRocgY0.net] Excelの関数や機能も知らん奴がVBAでマクロを作るか 少しは勉強しろよ、ってか 運転できないやつが、自動運転を作るみたいなもんか? ってか参照で十分なものを何でマクロ(笑)