!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part58
https://mevius.5ch.net/test/read.cgi/tech/1542577644/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part59
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d2a3-A3MQ)
2019/02/09(土) 15:12:30.70ID:3lTArmdf0503デフォルトの名無しさん (ワッチョイ 592b-nbQA)
2019/02/27(水) 09:27:38.25ID:ev0DPtJU0 >>501
ならない。
---------------------------
Microsoft Excel
---------------------------
10
---------------------------
OK
---------------------------
ならない。
---------------------------
Microsoft Excel
---------------------------
10
---------------------------
OK
---------------------------
504デフォルトの名無しさん (ワッチョイ a58e-19KH)
2019/02/27(水) 10:08:05.65ID:TCTVEEoa0 >>502
アホはお前
アホはお前
505デフォルトの名無しさん (JP 0H2e-eSdf)
2019/02/27(水) 10:14:24.05ID:94mgNWr4H >>504
自己紹介かな?
自己紹介かな?
506デフォルトの名無しさん (ワッチョイ a58e-19KH)
2019/02/27(水) 10:21:18.29ID:TCTVEEoa0507デフォルトの名無しさん (アウアウクー MM7d-0RHA)
2019/02/27(水) 10:48:04.11ID:hD6s3+cfM &演算子が勝手に文字列に変換するのは利便性考えたらわかるし
Long型の変数に文字列代入する時に暗黙のキャストするのもわからなくはない
けど警告ぐらいは出してほしいね
Long型の変数に文字列代入する時に暗黙のキャストするのもわからなくはない
けど警告ぐらいは出してほしいね
508デフォルトの名無しさん (JP 0H2e-eSdf)
2019/02/27(水) 10:48:12.18ID:94mgNWr4H >>506
それはエラーであってほしいというお前の願望だろ
それはエラーであってほしいというお前の願望だろ
509デフォルトの名無しさん (ワッチョイ 7d88-viXF)
2019/02/27(水) 11:32:27.96ID:WN1Wln/+0 VBAにも当然、厳密な構文ルールは存在するだろう
数字 & 文字列は文字列にするってのがルールじゃね。 一度覚えたらそれでいい
数字 & 文字列は文字列にするってのがルールじゃね。 一度覚えたらそれでいい
510デフォルトの名無しさん (ブーイモ MM0a-0USI)
2019/02/27(水) 11:45:10.68ID:K1qNq431M & が + に解釈されたらたまったもんじゃない
511デフォルトの名無しさん (スップ Sd0a-er5G)
2019/02/27(水) 12:38:47.93ID:JcvtiT+vd512デフォルトの名無しさん (スップ Sd0a-er5G)
2019/02/27(水) 12:41:38.23ID:JcvtiT+vd どんな言語でもツボは有るわけでね。
押さえてコードを書けない奴がアホなだけだろ。
初めて触った初心者じゃあるまいし警告なんて全く必要無い。
押さえてコードを書けない奴がアホなだけだろ。
初めて触った初心者じゃあるまいし警告なんて全く必要無い。
513デフォルトの名無しさん (スッップ Sd0a-19KH)
2019/02/27(水) 13:03:51.61ID:aJqXXkY2d >>509
代入先が数値だろ
代入先が数値だろ
514デフォルトの名無しさん (ワイモマー MM0a-uGSY)
2019/02/27(水) 13:08:23.01ID:OA+HeXxoM 同じマクロを使っている複数の文書があって、マクロの一部を修正したいんですが、
別ファイルのモジュール内の変更を行うマクロは VBA を使って書けますか?
または、別ファイルのモジュールを削除(開放)してインポートする形でも構いません。
実際はワードでやりたいことですがワードVBAスレがなさそうなのでこちらで質問しました。
Normal を書き換えて対応するというのはできない前提です。
別ファイルのモジュール内の変更を行うマクロは VBA を使って書けますか?
または、別ファイルのモジュールを削除(開放)してインポートする形でも構いません。
実際はワードでやりたいことですがワードVBAスレがなさそうなのでこちらで質問しました。
Normal を書き換えて対応するというのはできない前提です。
515デフォルトの名無しさん (スッップ Sd0a-19KH)
2019/02/27(水) 13:17:59.19ID:aJqXXkY2d >>514
スレ一覧よく見てみろ。そういういい加減で他人にすぐ聞くからできないことだらけなんだよ。
スレ一覧よく見てみろ。そういういい加減で他人にすぐ聞くからできないことだらけなんだよ。
516デフォルトの名無しさん (ブーイモ MM0a-0USI)
2019/02/27(水) 13:19:02.81ID:K1qNq431M ByRef x As Variant
517デフォルトの名無しさん (JP 0H2e-eSdf)
2019/02/27(水) 13:19:50.19ID:94mgNWr4H >>514
書けるよ
書けるよ
518デフォルトの名無しさん (ブーイモ MMc9-5UjA)
2019/02/27(水) 14:41:22.10ID:+oDGw9vfM >>503
Option Explicit付けてもエラーにならないのかな?
Option Explicit付けてもエラーにならないのかな?
519デフォルトの名無しさん (ワッチョイ 7d88-viXF)
2019/02/27(水) 15:47:12.82ID:WN1Wln/+0520デフォルトの名無しさん (ワッチョイ 7d88-viXF)
2019/02/27(水) 15:48:15.94ID:WN1Wln/+0 >それがVariantだから
すまん。これはなし
まあ変な構文ではある
すまん。これはなし
まあ変な構文ではある
521デフォルトの名無しさん (ブーイモ MM0a-0USI)
2019/02/27(水) 16:29:49.69ID:K1qNq431M522デフォルトの名無しさん (ドコグロ MM12-ZgJD)
2019/02/27(水) 17:58:08.46ID:HrTieKXOM >>507
& 演算子は文字列同士の連結だから
2 & 1 ⇒ "21"
"2" & 1 ⇒ "21"
2 & "1" ⇒ "21"
"2" & "1" ⇒ "21"
になる
逆に - 演算子は数値同士の引き算だから
2 - 1 ⇒ 1
"2" - 1 ⇒ 1
2 - "1" ⇒ 1
"2" & "1" ⇒ 1
になる
問題は + 演算子で普通は数値の足し算なんだけど両辺が文字列の時は文字列連結になるので
2 + 1 ⇒ 3
"2" + 1 ⇒ 3
2 + "1" ⇒ 3
"2" + "1" ⇒ "21"
になる
なのでVariant使っててA + Bとかやってると両方が文字列の時にはあ?ってなことになったりする
& 演算子は文字列同士の連結だから
2 & 1 ⇒ "21"
"2" & 1 ⇒ "21"
2 & "1" ⇒ "21"
"2" & "1" ⇒ "21"
になる
逆に - 演算子は数値同士の引き算だから
2 - 1 ⇒ 1
"2" - 1 ⇒ 1
2 - "1" ⇒ 1
"2" & "1" ⇒ 1
になる
問題は + 演算子で普通は数値の足し算なんだけど両辺が文字列の時は文字列連結になるので
2 + 1 ⇒ 3
"2" + 1 ⇒ 3
2 + "1" ⇒ 3
"2" + "1" ⇒ "21"
になる
なのでVariant使っててA + Bとかやってると両方が文字列の時にはあ?ってなことになったりする
523デフォルトの名無しさん (アウアウクー MM7d-0RHA)
2019/02/27(水) 18:25:55.24ID:hD6s3+cfM524デフォルトの名無しさん (アウアウウー Sa21-eq4B)
2019/02/27(水) 18:25:56.15ID:U+okKr8Fa 出力する時以外に文字列と他の型を演算させる需要ってあるか?
すごい変なプログラム書いてそう
すごい変なプログラム書いてそう
525デフォルトの名無しさん (アウアウクー MM7d-0RHA)
2019/02/27(水) 18:31:15.76ID:hD6s3+cfM526デフォルトの名無しさん (アウアウウー Sa21-eq4B)
2019/02/27(水) 18:45:49.28ID:U+okKr8Fa >>525
セルの値同士の計算をダイレクトにやろうとする発想にまず疑問を感じる
セルの値同士の計算をダイレクトにやろうとする発想にまず疑問を感じる
527デフォルトの名無しさん (スップ Sd0a-er5G)
2019/02/27(水) 18:48:38.08ID:JcvtiT+vd だから、型を意識してコード書かない奴は駄目なんだ。
あと、Cells(1,1) + Cells(1,2)じゃなくて、Cells(1,1).Value + Cells(1,2).Valueとすべき。
あと、Cells(1,1) + Cells(1,2)じゃなくて、Cells(1,1).Value + Cells(1,2).Valueとすべき。
528デフォルトの名無しさん (オイコラミネオ MMb5-W5xD)
2019/02/27(水) 18:53:54.71ID:sssEi30aM529デフォルトの名無しさん (ワッチョイ 3968-rusg)
2019/02/27(水) 19:19:30.96ID:s/3R2a1B0530デフォルトの名無しさん (ワッチョイ ea01-ZgJD)
2019/02/27(水) 19:31:13.45ID:zqU1UpTE0531デフォルトの名無しさん (ワッチョイ b602-PZ49)
2019/02/27(水) 19:35:36.50ID:kQabADAE0 本当によくできたプログラムっていうのは変数がどんどん減っていくものだよ
532デフォルトの名無しさん (ワッチョイ 11b0-0RHA)
2019/02/27(水) 19:49:19.80ID:J+jPuAvg0 やっぱVBAってクソだわ
533デフォルトの名無しさん (ワッチョイ 6a90-rusg)
2019/02/27(水) 19:52:19.85ID:Vhp/GCq70 >>532
と罵りたいだけが為にここに来るんだろ? プ
と罵りたいだけが為にここに来るんだろ? プ
534デフォルトの名無しさん (ワッチョイ 11b0-0RHA)
2019/02/27(水) 20:02:27.43ID:J+jPuAvg0 やっぱVBAスレってクソだわ
535デフォルトの名無しさん (ワッチョイ 89c5-T+SP)
2019/02/27(水) 20:17:03.40ID:INBREE+00 クソレスすんなプロさん
536デフォルトの名無しさん (ワッチョイ 9e8c-0USI)
2019/02/27(水) 21:22:24.52ID:rA0fzWNE0 >>531
デバッグはやりづらくなるけどな
デバッグはやりづらくなるけどな
537デフォルトの名無しさん (ワッチョイ 7d88-viXF)
2019/02/27(水) 21:48:46.20ID:WN1Wln/+0 まあやっぱり、1 & "0" とか "2" + 1
とかが出てきたら、エラーで落とすのが普通だろうなあ
で、プログラマはそこで、Val関数で数値にするとか逆に文字列にするとか
やっぱり型変換、確認をプログラムの中に入れながら作るのが本来の筋だと思うわ
そもそもの構文を変えないのであればね
とかが出てきたら、エラーで落とすのが普通だろうなあ
で、プログラマはそこで、Val関数で数値にするとか逆に文字列にするとか
やっぱり型変換、確認をプログラムの中に入れながら作るのが本来の筋だと思うわ
そもそもの構文を変えないのであればね
538デフォルトの名無しさん (アウアウエー Sa52-bAbS)
2019/02/27(水) 22:04:09.28ID:6/kMoeDHa どうでもいいよ
所詮VBAだし
所詮VBAだし
539デフォルトの名無しさん (ブーイモ MM0a-xRI1)
2019/02/27(水) 23:43:00.80ID:APPBNRQYM >>538
そういうこと
そういうこと
540デフォルトの名無しさん (ワッチョイ 1feb-IBRN)
2019/02/28(木) 00:41:55.86ID:ULaFt4eB0 質問です。お願いします。
public sub shuukei()
'集計してシートに書き出してそそのシートのコピーを別ファイルとして保存
end sub
↑
こういうコードを作りましたが、少しでも速く処理されるようにもっと工夫したいと思っています。
そこで、少し書き直しては速度に変化があるか確認したいのですが、コードの実行速度を
測る方法がわかりません。教えていただけないでしょうか?
public sub jikantest()
'計測スタート
call shuukei
'計測終り
msgbox かかった時間
end sub
↑
こんな感じでいちいち確認したいです。
public sub shuukei()
'集計してシートに書き出してそそのシートのコピーを別ファイルとして保存
end sub
↑
こういうコードを作りましたが、少しでも速く処理されるようにもっと工夫したいと思っています。
そこで、少し書き直しては速度に変化があるか確認したいのですが、コードの実行速度を
測る方法がわかりません。教えていただけないでしょうか?
public sub jikantest()
'計測スタート
call shuukei
'計測終り
msgbox かかった時間
end sub
↑
こんな感じでいちいち確認したいです。
541デフォルトの名無しさん (ワッチョイ ffdd-r++/)
2019/02/28(木) 00:46:39.13ID:3O1mZe4/0 >>540
dim st as single, ed as single
st = timer
(処理)
ed = timer
debug.print ed - st & "sec"
いつもこんな感じでやってる。
dim st as single, ed as single
st = timer
(処理)
ed = timer
debug.print ed - st & "sec"
いつもこんな感じでやってる。
542デフォルトの名無しさん (ワッチョイ 9f2f-8MIE)
2019/02/28(木) 00:47:31.02ID:CZa6uBrL0 Debug.Print Now でもしとけ
543デフォルトの名無しさん (ワッチョイ 1feb-IBRN)
2019/02/28(木) 00:51:18.30ID:ULaFt4eB0 >>541
ありがとうございました!
ありがとうございました!
544デフォルトの名無しさん (ワッチョイ 9f7c-sBsz)
2019/02/28(木) 01:23:05.26ID:8R6HTxA70 変数の型はトレースの時だけでもシンタックスハイライトして欲しい。
それか左辺に合うように強制キャストで。
それか左辺に合うように強制キャストで。
545デフォルトの名無しさん (ワッチョイ f7da-3oSp)
2019/02/28(木) 02:06:55.62ID:u4sOxAKE0 >>540
早くなってもわかりにくいのはやんない方がいいぞ
早くなってもわかりにくいのはやんない方がいいぞ
546デフォルトの名無しさん (ワッチョイ 1feb-IBRN)
2019/02/28(木) 06:51:30.57ID:ULaFt4eB0 お恥ずかしい質問ですが、もうひとつお願いします。
私は、変数の中身でもなんでも、とにかく確認したいときはmsgboxを使うんです。
そのほうが楽だし。
でも、こういう場所で回答するような人のほとんどは、>>541-542さんのように、
debug.なんとか ってのを使いますよね?
よくわからないけど、debugって、msgboxとは違って、どこかのウィンドウに表示させるってことだけ
は知っています。
そして、msgboxよりも、そっちの方がなんとなく本格派っぽいことも感じてます。
みなさん、どうしてmsgboxよりそっちを使うんですか?本当にそっちが便利なんですか?
私は、変数の中身でもなんでも、とにかく確認したいときはmsgboxを使うんです。
そのほうが楽だし。
でも、こういう場所で回答するような人のほとんどは、>>541-542さんのように、
debug.なんとか ってのを使いますよね?
よくわからないけど、debugって、msgboxとは違って、どこかのウィンドウに表示させるってことだけ
は知っています。
そして、msgboxよりも、そっちの方がなんとなく本格派っぽいことも感じてます。
みなさん、どうしてmsgboxよりそっちを使うんですか?本当にそっちが便利なんですか?
547デフォルトの名無しさん (ワッチョイ 9701-j5yB)
2019/02/28(木) 06:56:12.35ID:PI/gJuny0 >>546
msgboxだと毎回画面が出ちゃうから
msgboxだと毎回画面が出ちゃうから
548デフォルトの名無しさん (ワッチョイ d74f-nvQ/)
2019/02/28(木) 07:04:09.83ID:TTqJ1VR80 Debugって俺も使ったことないんだが、過去何行くらいまで遡れるの?
それとその結果ってファイルに出力できる?
それとその結果ってファイルに出力できる?
549デフォルトの名無しさん (ワッチョイ 9fa2-IBRN)
2019/02/28(木) 07:09:57.92ID:syDDbQ630 自分はstopとローカウルィンドウ派だな
550デフォルトの名無しさん (ワッチョイ ffdd-r++/)
2019/02/28(木) 07:10:06.15ID:3O1mZe4/0 >>546
OK押すのメンドいし、押したら消えるし。
Printならイミディエイトウィンドウにどんどん溜まっていくから比較しやすいし。
VBE上でCtrl+Gで呼び出せる。
コード書くときは常に表示してるな。
他にもいろいろ便利に使えるからGGってみて。
OK押すのメンドいし、押したら消えるし。
Printならイミディエイトウィンドウにどんどん溜まっていくから比較しやすいし。
VBE上でCtrl+Gで呼び出せる。
コード書くときは常に表示してるな。
他にもいろいろ便利に使えるからGGってみて。
551デフォルトの名無しさん (アウアウウー Sa9b-fNI3)
2019/02/28(木) 07:28:40.77ID:/X5EyKzha debug.printなら開発画面を見ない他の使用者が
気付かないで済む
気付かないで済む
552デフォルトの名無しさん (ドコグロ MM6b-dMaL)
2019/02/28(木) 08:31:53.34ID:3CdGs56rM >>540
ちょっと本格的にやるなら…
https://blogs.yahoo.co.jp/yangzh_jp/26557113.html
注意!
中にも書いてあるけど使用時にコードを改変するから使うならバックアップはちゃんと取ること
ちょっと本格的にやるなら…
https://blogs.yahoo.co.jp/yangzh_jp/26557113.html
注意!
中にも書いてあるけど使用時にコードを改変するから使うならバックアップはちゃんと取ること
553デフォルトの名無しさん (スップ Sd3f-IK5z)
2019/02/28(木) 12:28:10.25ID:wbPQJw42d554デフォルトの名無しさん (スップ Sd3f-IK5z)
2019/02/28(木) 12:32:41.06ID:wbPQJw42d555デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/02/28(木) 12:33:37.47ID:qWkUq+5ha >>553
まああくまで傾向だな
システム開発に絶対はないから大まかに語るしかない
しかしまあプログラマって柔軟性がないから何か意見を言ったら必ず特殊な状況を想定して反論しようとする人が出てきて面倒くさいな
まああくまで傾向だな
システム開発に絶対はないから大まかに語るしかない
しかしまあプログラマって柔軟性がないから何か意見を言ったら必ず特殊な状況を想定して反論しようとする人が出てきて面倒くさいな
556デフォルトの名無しさん (JP 0H4f-j5yB)
2019/02/28(木) 13:23:20.67ID:qor22oN3H 柔軟性がある人は出世するからね
557デフォルトの名無しさん (ブーイモ MMbf-0snV)
2019/02/28(木) 13:59:45.70ID:TjDXn6TQM558デフォルトの名無しさん (アウアウクー MM0b-VAd9)
2019/02/28(木) 14:20:36.03ID:x4ZPjfd7M 考慮すべき場面とするべきでない、しても意味がない場面の判断ができないとも言える
559デフォルトの名無しさん (JP 0H4f-j5yB)
2019/02/28(木) 14:36:57.48ID:qor22oN3H だから日本は開発が遅いんだよ
アジャイルでやれ
アジャイルでやれ
560デフォルトの名無しさん (ワッチョイ f7ce-uydA)
2019/02/28(木) 14:57:38.31ID:7AaSmpPf0 想定される状況なんか結局は本人にしか分からないし、説明すんのもめんどくさい
まあ本人が気付いてないこともあるけど
まあ本人が気付いてないこともあるけど
561デフォルトの名無しさん (ドコグロ MM6b-dMaL)
2019/02/28(木) 17:57:19.76ID:3CdGs56rM >>555
決めつけで語って指摘されたら逆ギレかよ w
決めつけで語って指摘されたら逆ギレかよ w
562デフォルトの名無しさん (ワッチョイ 9fa3-+f+8)
2019/02/28(木) 18:42:40.55ID:jqfgz8pY0 ーーここまで型変換関数なしーー
身内が意味がわかるっていうなら変換関数抜きにしてもいいかもしれない、けどコンテキスト的に関数噛ませたい
身内が意味がわかるっていうなら変換関数抜きにしてもいいかもしれない、けどコンテキスト的に関数噛ませたい
563デフォルトの名無しさん (アークセー Sx0b-Yt/p)
2019/02/28(木) 18:45:13.08ID:OctLDBwCx Debug.Assertも割とよく使う
564デフォルトの名無しさん (ワッチョイ f7ce-uydA)
2019/02/28(木) 21:21:18.29ID:7AaSmpPf0 Variant使わなきゃいい
565デフォルトの名無しさん (ブーイモ MM1b-9NtP)
2019/02/28(木) 22:12:12.40ID:TWIU4lxdM566デフォルトの名無しさん (アークセー Sx0b-Yt/p)
2019/02/28(木) 23:20:59.71ID:JVzuLoidx Variant型がないとそれはそれで不便
実行時にならないと変数の保持データの参照型やデータ構造が決定できないような関数を定義するときには必須
Object型では限界があるし、多態性とか考えたら特に
実行時にならないと変数の保持データの参照型やデータ構造が決定できないような関数を定義するときには必須
Object型では限界があるし、多態性とか考えたら特に
567デフォルトの名無しさん (アウアウエー Sadf-hSmr)
2019/03/01(金) 00:53:35.24ID:oijdm3qva VBAにもInterfaceがあるの知らない人かな
568デフォルトの名無しさん (スップ Sd3f-IK5z)
2019/03/01(金) 08:24:19.03ID:KSyELWIpd だから意識して使うぶんには良いんだよ。
Variant配列で高速化は良くやるだろ。
あるいはあえていろんな型を受け付ける関数を作る場合とか。
俺はInteraceはあまり使わんね。
同じプロパティを持ったクラスを複数作ってグループとして使う場合でもそこまでしなくて良いだろと考える。
Variant配列で高速化は良くやるだろ。
あるいはあえていろんな型を受け付ける関数を作る場合とか。
俺はInteraceはあまり使わんね。
同じプロパティを持ったクラスを複数作ってグループとして使う場合でもそこまでしなくて良いだろと考える。
569デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/01(金) 08:58:16.79ID:IB7Yh9y1a プログラムの基本的な良い習慣を実践すればVariantなんてそう使うことはない
使うとしてもシートIOなど僅かな用途だけだから業務ロジックまで影響することはまずない
使うとしてもシートIOなど僅かな用途だけだから業務ロジックまで影響することはまずない
570デフォルトの名無しさん (ワッチョイ 9f90-W5e4)
2019/03/01(金) 09:03:46.13ID:BWIoX5Sk0 プロ雑談者どものくだらん蘊蓄語り合いなんぞどうでも良いから質問者の方々は
遠慮なさらずにどうぞ〜
遠慮なさらずにどうぞ〜
571デフォルトの名無しさん (ブーイモ MM3b-sBsz)
2019/03/01(金) 12:55:03.48ID:3XNO5Z9qM コードって色々書く場所あると思うんですけど、ある程度共通の切り分けってあるんですか?
フォームにはあまりややこしいものはかかないで標準モジュールを使うとか。
逆にフォームで書けるものは複雑でもそこで終わらせたほうがいいとか。
今迷ってるのはシート1のデータを加工してシート2のデータにマージさせる場合どこに書けばいいんだろうってことです。
そのシートごとに別けるとバラけて解りにくくなるしみたいな感じです。
フォームにはあまりややこしいものはかかないで標準モジュールを使うとか。
逆にフォームで書けるものは複雑でもそこで終わらせたほうがいいとか。
今迷ってるのはシート1のデータを加工してシート2のデータにマージさせる場合どこに書けばいいんだろうってことです。
そのシートごとに別けるとバラけて解りにくくなるしみたいな感じです。
572デフォルトの名無しさん (ドコグロ MMdb-hSmr)
2019/03/01(金) 13:04:09.15ID:SCR8DJeBM 所詮VBAだしどうでもいいよ
VBAの可読性・保守性を高める唯一の指針があるとしたら、極力VBAを書かないでワークシートの機能を活用することかな
VBAの可読性・保守性を高める唯一の指針があるとしたら、極力VBAを書かないでワークシートの機能を活用することかな
573デフォルトの名無しさん (JP 0H4f-j5yB)
2019/03/01(金) 13:26:59.89ID:HgS5037SH >>571
標準モジュールに Sub MergeSheet1To2 とか作ってCallすれば、他人が処理部を見なくても「このボタンを押すとマージされるんだなぁ」と想像ができる。
自分はフォーム内は処理に使うデータのチェックくらいにしてる。
標準モジュールに Sub MergeSheet1To2 とか作ってCallすれば、他人が処理部を見なくても「このボタンを押すとマージされるんだなぁ」と想像ができる。
自分はフォーム内は処理に使うデータのチェックくらいにしてる。
574デフォルトの名無しさん (ワッチョイ 9f01-IBRN)
2019/03/01(金) 14:04:11.91ID:+h/xS+gL0 フォームモジュールって細々としたイベントのプロシージャであふれちゃって見にくい
だからできるだけ標準モジュールに切り分けてる
例えばフォーム上の複数のTextBoxに全く同じ入力規則を設けたい時なんかは
TextBox・KeyCode・Shiftを引数とするプロシージャを標準モジュールに書いて使い回ししてる
さっきもそういうの書いてた
だからできるだけ標準モジュールに切り分けてる
例えばフォーム上の複数のTextBoxに全く同じ入力規則を設けたい時なんかは
TextBox・KeyCode・Shiftを引数とするプロシージャを標準モジュールに書いて使い回ししてる
さっきもそういうの書いてた
575デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/01(金) 17:47:45.49ID:jYXMQwAma576デフォルトの名無しさん (スップ Sd3f-IK5z)
2019/03/01(金) 18:53:01.98ID:KSyELWIpd >>571
そのフォームで完結させたい時はフォームに全部書く。
汎用的なのは標準モジュール、汎用的でなくてもいろんな所から使い回す場合も標準モジュールだな。
シートモジュールにはシートのイベントプロシージャ以外書かないのが基本だけどそのシートのイベントプロシージャと一緒にしたい理由でシートモジュールに書くこともある。
意味論というか、何処に書くかは内容で決める。その方が後でコード見る時に視認性も良くなる。
そのフォームで完結させたい時はフォームに全部書く。
汎用的なのは標準モジュール、汎用的でなくてもいろんな所から使い回す場合も標準モジュールだな。
シートモジュールにはシートのイベントプロシージャ以外書かないのが基本だけどそのシートのイベントプロシージャと一緒にしたい理由でシートモジュールに書くこともある。
意味論というか、何処に書くかは内容で決める。その方が後でコード見る時に視認性も良くなる。
577デフォルトの名無しさん (アウアウウー Sa9b-fNI3)
2019/03/01(金) 20:10:20.22ID:9ceAGmrya 俺ならスコープで書く場所変えてる
578デフォルトの名無しさん (ワッチョイ d783-nvQ/)
2019/03/01(金) 20:18:09.30ID:S/p2I5Nx0 シート1だけでしか使わない関数はシート1
その関数の中で使う関数で他でも使う汎用関数は標準モジュール
シート1のデータを加工ってあるが、それが将来にでも他のシートでも使いそうならその加工関数は汎用化して
標準モジュール。 シート1でしか使わないのならその加工関数はシート1に書く
その関数の中で使う関数で他でも使う汎用関数は標準モジュール
シート1のデータを加工ってあるが、それが将来にでも他のシートでも使いそうならその加工関数は汎用化して
標準モジュール。 シート1でしか使わないのならその加工関数はシート1に書く
579デフォルトの名無しさん (ワッチョイ 9f7c-L+km)
2019/03/01(金) 21:39:17.32ID:41cCIQF20 上級者の人がどう使っているかなんとなく解ったような気がします。とりあえず
【クラスモジュール】汎用性のある関数
【標準モジュール】 大きな処理
【シートモジュール】【フォーム】極力使わないが他と絡まない短いコードなら完結しても良い
という感じで試してみようと思います。
あとは関数名の最後に呼び出しする関数がある場所を付けてみようと思います。
何をやりたいかで構成も変わると思うのでそこらへんも加味しながら試してみます。
参考になりました、ありがとうございます!
【クラスモジュール】汎用性のある関数
【標準モジュール】 大きな処理
【シートモジュール】【フォーム】極力使わないが他と絡まない短いコードなら完結しても良い
という感じで試してみようと思います。
あとは関数名の最後に呼び出しする関数がある場所を付けてみようと思います。
何をやりたいかで構成も変わると思うのでそこらへんも加味しながら試してみます。
参考になりました、ありがとうございます!
580デフォルトの名無しさん (アウアウクー MM0b-VAd9)
2019/03/01(金) 22:34:27.56ID:KieDV9lDM ここに上級者なんていないぞ
581デフォルトの名無しさん (ワッチョイ bf8c-9NtP)
2019/03/01(金) 22:48:58.94ID:eQhW3/JV0 >>579
関数名の最後になにを付けるって?
関数名の最後になにを付けるって?
582デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/01(金) 23:05:06.38ID:jYXMQwAma また一人、道に迷ってしまった
やっぱりVBAで勉強するのは非推奨ダナ
やっぱりVBAで勉強するのは非推奨ダナ
583デフォルトの名無しさん (ワッチョイ ffda-3oSp)
2019/03/01(金) 23:30:05.02ID:zWZoP6hm0584デフォルトの名無しさん (アークセー Sx0b-Yt/p)
2019/03/02(土) 01:21:31.95ID:Po9hNmd9x >>579
汎用性のある関数を記載する場所だけど、VBAの仕様ではクラスモジュールではなく標準モジュールの方が都合が良いよ
何故なら自作のクラスモジュールに記述した関数を呼び出す場合、その自作クラスのオブジェクトのインスタンスを生成した後にそのオブジェクトのメソッドとして書くという手間が要る
つまりマシンメメモリの無駄食いになるしコーディング量も増える
標準モジュールならば関数名を書くだけで呼べるので余程気楽
適当にググったときに出てくる、OOP原理主義のJavaプログラマあたりが言うところの「汎用性のある関数はクラスに」っていう考え方は、VBAには当てはまらないので注意だよ
汎用性のある関数を記載する場所だけど、VBAの仕様ではクラスモジュールではなく標準モジュールの方が都合が良いよ
何故なら自作のクラスモジュールに記述した関数を呼び出す場合、その自作クラスのオブジェクトのインスタンスを生成した後にそのオブジェクトのメソッドとして書くという手間が要る
つまりマシンメメモリの無駄食いになるしコーディング量も増える
標準モジュールならば関数名を書くだけで呼べるので余程気楽
適当にググったときに出てくる、OOP原理主義のJavaプログラマあたりが言うところの「汎用性のある関数はクラスに」っていう考え方は、VBAには当てはまらないので注意だよ
585デフォルトの名無しさん (ワッチョイ f7ce-uydA)
2019/03/02(土) 02:50:08.40ID:eoNuxzNL0586デフォルトの名無しさん (ワッチョイ 9fa2-IBRN)
2019/03/02(土) 03:08:30.41ID:vHLv5v7t0 >>585
数式タブ→数式の表示
数式タブ→数式の表示
587デフォルトの名無しさん (アークセー Sx0b-Yt/p)
2019/03/02(土) 09:24:48.87ID:Po9hNmd9x588デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/02(土) 09:34:34.03ID:heck9gfNa ワークシート関数の何が良いかというと副作用がないことだよ
ぶっちゃけ重要なのはそこだけ
それ以外ではセル内にだらだら式を書くと醜いなどデメリットしかない
なのでVBAで普通に副作用がない関数を書けばいい
副作用のない関数ならVBAからもセル内式からも使いやすい
しかもセル内式と違って見やすく管理しやすい
ぶっちゃけ重要なのはそこだけ
それ以外ではセル内にだらだら式を書くと醜いなどデメリットしかない
なのでVBAで普通に副作用がない関数を書けばいい
副作用のない関数ならVBAからもセル内式からも使いやすい
しかもセル内式と違って見やすく管理しやすい
589デフォルトの名無しさん (アークセー Sx0b-Yt/p)
2019/03/02(土) 09:47:47.22ID:Po9hNmd9x VBAの方が見やすくて管理しやすくてワークシート関数は見にくいって図式が成り立つかどうかは正直処理を書くやつのスキル次第だけどな
ワークシート関数は必ず内部スコープが()で括られるリスト形式だから、処理構造が簡潔に可視化できるメリットがあるとも言えるわけだし
ワークシート関数は必ず内部スコープが()で括られるリスト形式だから、処理構造が簡潔に可視化できるメリットがあるとも言えるわけだし
590デフォルトの名無しさん (ワッチョイ bf8c-9NtP)
2019/03/02(土) 10:15:37.68ID:VydunwR60 自分は>>572とほぼ正反対のやり方でやってきた
シートは使い捨てのデータとちょっとした設定情報を置いたり、あとは結果を出力する場所としてしか使わないな。
使い捨てのは別だけど、ツールとして繰り返し使うブックのシートに関数はほぼ書いてない。
シートは使い捨てのデータとちょっとした設定情報を置いたり、あとは結果を出力する場所としてしか使わないな。
使い捨てのは別だけど、ツールとして繰り返し使うブックのシートに関数はほぼ書いてない。
591デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/02(土) 10:26:10.19ID:heck9gfNa592デフォルトの名無しさん (アウアウエー Sadf-hSmr)
2019/03/02(土) 10:34:03.78ID:1SfH4HCRa593デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/02(土) 10:46:06.68ID:heck9gfNa >>592
そもそもセル名前自体が管理しにくいので論外
セル名と数式の関係性がパッと見てわからないし
セル名と数式がひも付けられて管理されてると言われなきゃ後任が気付かない
VBA関数ならこの関数名はこの定義って誰でも一目でわかる
本来の出力でない余計なカラムはノイズになって邪魔
名前で管理したい項目が増えたらノイズだらけになってなにを説明したい表なのかわからなくなる
そもそもセル名前自体が管理しにくいので論外
セル名と数式の関係性がパッと見てわからないし
セル名と数式がひも付けられて管理されてると言われなきゃ後任が気付かない
VBA関数ならこの関数名はこの定義って誰でも一目でわかる
本来の出力でない余計なカラムはノイズになって邪魔
名前で管理したい項目が増えたらノイズだらけになってなにを説明したい表なのかわからなくなる
594デフォルトの名無しさん (ワッチョイ 7f0d-+O5F)
2019/03/02(土) 10:57:15.96ID:ZJ+HN4z+0 visual studioに慣れ切ってしまってるのでVBAエディタがマジで苦手・・・
595デフォルトの名無しさん (ドコグロ MMdf-hSmr)
2019/03/02(土) 11:26:41.59ID:PSsyx6QoM596デフォルトの名無しさん (アウアウウー Sa9b-zhdC)
2019/03/02(土) 11:40:34.50ID:heck9gfNa >>595
こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ?
こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ?
597デフォルトの名無しさん (ワッチョイ f7da-3oSp)
2019/03/02(土) 13:55:25.27ID:WupyvY1Q0 話変わるがセルのコピーとか移動したときに条件付き書式が壊れてやたら重くなって直すの苦労したことある
598デフォルトの名無しさん (ワッチョイ 9f2f-nxCI)
2019/03/02(土) 15:18:36.62ID:EfeqCtIS0 お前らまず、
ワークシートの機能を活用する
というのをどういうことかちゃんと合わせてから話してくれるか
ワークシートの機能を活用する
というのをどういうことかちゃんと合わせてから話してくれるか
599デフォルトの名無しさん (アークセー Sx0b-Yt/p)
2019/03/02(土) 18:22:41.70ID:BmvnLX83x >>598
ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ
ワークシートの特定の機能を想定して話をしてるんじゃない
ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ
ワークシートの特定の機能を想定して話をしてるんじゃない
ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
600デフォルトの名無しさん (ワッチョイ ffda-3oSp)
2019/03/02(土) 19:24:09.91ID:PK2Geudt0 ワークシートって言いすぎww
Withでまとめたくなってきたわ。
Withでまとめたくなってきたわ。
601デフォルトの名無しさん (JP 0Hdf-lo0V)
2019/03/02(土) 19:30:50.79ID:6n8BrDHBH With ワークシート
.の機能ってのは
.の機能一般のことでしかないだろ
.の特定の機能を想定して話をしてるんじゃない
.の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
End With
.の機能ってのは
.の機能一般のことでしかないだろ
.の特定の機能を想定して話をしてるんじゃない
.の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
End With
602デフォルトの名無しさん (ワッチョイ bf8c-9NtP)
2019/03/02(土) 20:23:41.79ID:VydunwR60 ワークシートの機能って単独のワークシート関数で実現できることなの?
それをVBAでやるのは確かに馬鹿らしい。
そうじゃないならVBAのほうがいいな。
それをVBAでやるのは確かに馬鹿らしい。
そうじゃないならVBAのほうがいいな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市朗報】 日本政府「一昨年は1300億円。去年も防衛費が1100億円余ったw」 日本の防衛費は充分足りてる事が判明。増やす必要無し [485983549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【速報】51歳まで自衛隊になれるように法改正ww [347751896]
