21/03/27(土)23:05:13 Excelの... のスレッド詳細
削除依頼やバグ報告は メールフォーム にお願いします。個人情報、名誉毀損、侵害等については積極的に削除しますので、 メールフォーム より該当URLをご連絡いただけると助かります。
21/03/27(土)23:05:13 No.787402885
ExcelのVBAでプログラミングする時に こういう所は気を付けた方がいいとかあったら教えてほしい
1 21/03/27(土)23:06:02 No.787403243
未来の自分が見てもわかるようにすること
2 21/03/27(土)23:06:29 No.787403442
見りゃわかるだろうは見てもわからなくなる
3 21/03/27(土)23:06:35 No.787403470
まずOption Explicitを書く
4 21/03/27(土)23:07:41 No.787403902
ある日突然ぶっ壊れることを考えて使わないと死ねる
5 21/03/27(土)23:08:53 No.787404422
おろかなにんげんが使用しても壊れないようにすること
6 21/03/27(土)23:09:10 No.787404527
コールバック関数は標準モジュールでしか動作しない
7 21/03/27(土)23:09:25 No.787404632
愚かな人間しかいない…
8 21/03/27(土)23:10:19 No.787405014
On Errorは便利だぞ
9 21/03/27(土)23:10:25 No.787405067
分かりやすい関数にする
10 21/03/27(土)23:10:41 No.787405171
他人にマクロの存在をさとられないようにすること
11 21/03/27(土)23:10:58 No.787405290
>未来の自分が見てもわかるようにすること どうすればそれが出来るか…
12 21/03/27(土)23:11:03 No.787405321
グラフは超面倒
13 21/03/27(土)23:11:44 No.787405592
>On Errorは便利だぞ 便利だけど仕上げのスパイスだから開発途上では切っとけよ
14 21/03/27(土)23:12:57 No.787406097
>分かりやすい関数にする 日本語で書いとくとわかりやすいぜー!
15 21/03/27(土)23:13:09 No.787406188
>ある日突然ぶっ壊れることを考えて使わないと死ねる 素のVBと違ってモジュールがテキスト形式で保存されてないから 突然壊れてExcelで開けなくなるとコード回収できなくなるんだよね
16 21/03/27(土)23:13:12 No.787406221
>他人にマクロの存在をさとられないようにすること これを怠ると担当離れても自分に問い合わせ来るもんな…
17 21/03/27(土)23:13:42 No.787406421
selectしない
18 21/03/27(土)23:13:54 No.787406501
つまりマクロを使わなければいいってことだな!
19 21/03/27(土)23:14:04 No.787406573
EXCELってそれなりに知ってるはずだけど デフォで付いてる知らない機能盛りだくさんなんだろうな
20 21/03/27(土)23:14:12 No.787406631
Googleのスプレッドシートでもいきなり壊れたりはあるんだろうか
21 21/03/27(土)23:14:29 No.787406754
>コールバック関数は標準モジュールでしか動作しない まずコールバックかんすうというものを知らなかった こんなものがあるのか…
22 21/03/27(土)23:15:21 No.787407128
>EXCELってそれなりに知ってるはずだけど >デフォで付いてる知らない機能盛りだくさんなんだろうな Ctrl+;とかCtrl+:ですら知らん人は少なからずいるしな
23 21/03/27(土)23:16:48 No.787407779
元で用意されてる関数で出来ないことってどんなこと?
24 21/03/27(土)23:19:26 No.787408852
>元で用意されてる関数で出来ないことってどんなこと? 行列演算
25 21/03/27(土)23:24:07 No.787410770
Dim a,b As Integer としたときaはIntegerでなくVariant型
26 21/03/27(土)23:24:10 No.787410795
>>分かりやすい関数にする >日本語で書いとくとわかりやすいぜー! CountTukueIsuとかださいし…まさか漢字?
27 21/03/27(土)23:24:39 No.787411012
>Googleのスプレッドシートでもいきなり壊れたりはあるんだろうか あっちはロールバック効くから誰が壊したかわかる
28 21/03/27(土)23:25:16 No.787411264
そのファイルを扱う人数を考慮すること 人数が増えれば増えるほどアホアホ人間の混入率も増える
29 21/03/27(土)23:25:35 No.787411404
ボタン一発でシート内のセル幅を1文字にそろえるVBAがあれば弊社の業務の効率アップが期待できる
30 21/03/27(土)23:26:48 No.787411902
テキストファイルの処理とかならVBSにしてエクセル開かなくて良いんじゃないかと思ったけど エクセルの関数がないと心もとない
31 21/03/27(土)23:27:06 No.787412006
違うところで2回見かけた処理はモジュールにPublicで用意してそっちを使う 間違ってもPublicのプロシージャをPublicのままコピペして増やさない
32 21/03/27(土)23:27:51 No.787412277
>ボタン一発でシート内のセル幅を1文字にそろえるVBAがあれば弊社の業務の効率アップが期待できる 作れない事はないけど使うなそんなもの
33 21/03/27(土)23:28:34 No.787412529
>Dim a,b As Integer >としたときaはIntegerでなくVariant型 嘘ッ!?マジで!?!?
34 21/03/27(土)23:28:34 No.787412535
ExcelVBAのIntegerって32768までなんだっけ
35 21/03/27(土)23:29:40 No.787412920
全部Variantにしとけばいいんだよ
36 21/03/27(土)23:30:01 No.787413046
>ExcelVBAのIntegerって32768までなんだっけ Officeが32ビット版か64ビット版かで変わる
37 21/03/27(土)23:30:25 No.787413209
>全部Variantにしとけばいいんだよ すぞ
38 21/03/27(土)23:30:45 No.787413341
https://github.com/vbaidiot/Ariawase これ使ってgitなりでソースコード管理するのおすすめ
39 21/03/27(土)23:30:53 No.787413397
ExcelVBAのIntegerって32768までなんだっけ >-32768~+32767
40 21/03/27(土)23:31:32 No.787413655
>型は書かなくていいんだよ
41 21/03/27(土)23:32:01 No.787413809
>型は書かなくていいんだよ >すぞ
42 21/03/27(土)23:32:26 No.787413966
3万ぐらいは超えること割とあるから困る
43 21/03/27(土)23:33:07 No.787414191
>3万ぐらいは超えること割とあるから困る 「」Currencyを使え!
44 21/03/27(土)23:34:34 No.787414716
使うなら配列よりcollectionだぞ
45 21/03/27(土)23:35:29 No.787415051
なんでExcelちゃんはファイルの場所をフルパスでしか理解してくれないの
46 21/03/27(土)23:35:38 No.787415098
array()は要素を一行で書ける偉いやつだよ
47 21/03/27(土)23:35:42 No.787415122
>>3万ぐらいは超えること割とあるから困る >「」Currencyを使え! Longじゃダメなんです?
48 21/03/27(土)23:35:55 No.787415205
定義まとめてできるんだ…できないんだ…
49 21/03/27(土)23:37:15 No.787415693
>Longじゃダメなんです? 金の計算だとlongは結構超えるしlonglongは32bit版だとないから…
50 21/03/27(土)23:38:28 No.787416115
>Longじゃダメなんです? Currencyは-922,337,203,685,477.5808~922,337,203,685,477.5807のスゴイヤツ しかも整数演算
51 21/03/27(土)23:38:32 No.787416142
基本シングルスレッドと言うか他のマクロが走ってるところでマクロ走らせようとするとはまりがち
52 21/03/27(土)23:38:38 No.787416178
iPadでExcel使いたいなーと思ってるけどそもそもExcelの使い方なんて覚えてなかった…
53 21/03/27(土)23:38:39 No.787416186
integerは内部的にlongになって処理されるって噂聞いたんだけどマジなんです?
54 21/03/27(土)23:41:31 No.787417176
>integerは内部的にlongになって処理されるって噂聞いたんだけどマジなんです? んなこたーない dim a as integer dim b as long a = 32767 b = a + 1 ←エラーになる
55 21/03/27(土)23:42:49 No.787417670
>気を付けた方がいいとかあったら教えてほしい 気をつけることをお前に教える
56 21/03/27(土)23:43:03 No.787417768
変数名を英単語にしない
57 21/03/27(土)23:43:07 No.787417787
会社を辞める時に備えてメンテナンス性の悪さを追求した作りにすべき
58 21/03/27(土)23:43:32 No.787417944
セルに関数入れておけば済む程度のことならマクロ組まず関数で済ませろ
59 21/03/27(土)23:43:50 No.787418027
言われてみればaが32767を超えた場合に型がIntegerだったらエラーとする…なんて無駄な処理するわけもないしな
60 21/03/27(土)23:44:09 No.787418128
VBAを使わないようにする
61 21/03/27(土)23:44:27 No.787418235
30000とか行番号にしか使えねえ
62 21/03/27(土)23:44:28 No.787418246
マクロの記録でdb操作とか記録とれるくせにスクリーンキャプチャは記録できないとこ
63 21/03/27(土)23:44:40 No.787418308
変なコメント入れない
64 21/03/27(土)23:45:39 No.787418630
>>ExcelVBAのIntegerって32768までなんだっけ >Officeが32ビット版か64ビット版かで変わる 仕事で32bitマクロファイルを64bit化対応したがものすごく面倒だった VBA滅んでくれ
65 21/03/27(土)23:46:12 No.787418805
1マクロ1機能
66 21/03/27(土)23:46:55 No.787419039
変なコメントって何だ
67 21/03/27(土)23:48:05 No.787419446
>変なコメントって何だ ' なんか読みにくいからそのうち直す(笑)
68 21/03/27(土)23:48:09 No.787419462
>変なコメントって何だ 'おぺにす…
69 21/03/27(土)23:48:30 No.787419554
>1マクロ1機能 了解!! 全機能を1つのSUBで実装します!
70 21/03/27(土)23:48:53 No.787419667
破壊的な関数を作らないこと
71 21/03/27(土)23:49:04 No.787419724
sheetとかcellのプロパティはウォッチウィンドウにデバッグ中にオブジェクト適当に投げておくといいよ こういうのあるかなーって思ったら眺めてみるといいよ
72 21/03/27(土)23:49:06 No.787419737
>変なコメントって何だ '変数hageがtrueの場合 if hage then
73 21/03/27(土)23:49:57 No.787420030
一括コメントアウト機能はあるのでいちいち入力する必要はない
74 21/03/27(土)23:50:19 No.787420178
>>変なコメントって何だ >'変数hageがtrueの場合 >if hage then 要ら ねえ よ!!! 見ればわかるよ!!!
75 21/03/27(土)23:50:50 No.787420349
VBAでなく関数で出来る事は関数を使う 何をしたいかコメントで説明する 何してるかわかるように機能毎に分ける 人は裏側でやってる事はわからないので出来るだけ関数を使う 行数は少なくシンプルに 名前は分かりやすく認識しやすいものを使う VBAを保守できる人材は少ないので極力関数を使う
76 21/03/27(土)23:51:05 No.787420434
varを使うやつの頭と下の毛根焼き切りたい
77 21/03/27(土)23:51:35 No.787420582
>仕事で32bitマクロファイルを64bit化対応したがものすごく面倒だった しかも64bitって別に推奨されてないのにユーザーはなんで今時64bitじゃないんだと文句言う
78 21/03/27(土)23:51:56 No.787420683
標準モジュールじゃなく各シート内のマクロに2~3000行詰め込むやつは須く滅んでほしい
79 21/03/27(土)23:51:57 No.787420693
ただし関数書いてあるセルに値を直接入力される可能性は考慮しておく…
80 21/03/27(土)23:53:05 No.787421029
>ひとつのプロシージャに2~3000行詰め込むやつは須く滅んでほしい
81 21/03/27(土)23:53:36 No.787421205
>標準モジュールじゃなく各シート内のマクロに2~3000行詰め込むやつは須く滅んでほしい やっぱ標準モジュールに詰め込むのがスタンダードなのかな? 俺も一応そうしてるけど
82 21/03/27(土)23:54:23 No.787421419
>セルに関数入れておけば済む程度のことならマクロ組まず関数で済ませろ 再計算オフにしておかないと開くのに2分かかるようなワークブックが作られる作った
83 21/03/27(土)23:54:54 No.787421595
1行でいいからコメントはマメに入れる
84 21/03/27(土)23:55:46 No.787421867
とりあえずScreenUpdatingをFalseにする
85 21/03/27(土)23:56:19 No.787422051
>再計算オフにしておかないと開くのに2分かかるようなワークブックが作られる作った たまにあるよね関数だらけでグラフが100個くらい並んでるシート
86 21/03/27(土)23:57:07 No.787422330
クソデカ整数ってどうやって扱うのか知らない
87 21/03/27(土)23:57:11 No.787422356
IDEないとやってられないけど VBAはあるんだろうか
88 21/03/27(土)23:58:32 No.787422793
>やっぱ標準モジュールに詰め込むのがスタンダードなのかな? >俺も一応そうしてるけど だいたいそう 標準モジュールに関数を詰め込んだ上でダブってる処理があれば1つの関数にまとめる 各シートには標準モジュールの関数を呼ぶ処理ぐらいしか書かないくらいがいい
89 21/03/27(土)23:58:39 No.787422834
>IDEないとやってられないけど >VBAはあるんだろうか あるよ
90 21/03/27(土)23:59:18 No.787423027
>IDEないとやってられないけど >VBAはあるんだろうか ないよ でもラバーダックっていうアドインが近いかも
91 21/03/27(土)23:59:27 No.787423083
>IDEないとやってられないけど >VBAはあるんだろうか Excelがそれだな
92 21/03/27(土)23:59:35 No.787423129
客が業務ソフトにExcelみたいな機能付けてと言われると 出来るわけねーだろと返したいがグレープシティのライブラリ使えばそれっぽいのが実現できてしまう…
93 21/03/27(土)23:59:41 No.787423160
あんまり複雑になるならVBAやめる
94 21/03/28(日)00:00:09 No.787423310
よくエクセルマクロとかVBAのスレ立ってるけど使ったことないから気になってんだよな まあ気になったところで普段遣いするにはリッチすぎて多分使わないから業務で必要になったときに調べるようになるんだろうけど
95 21/03/28(日)00:00:45 No.787423533
画面再描画停止と再計算停止は有ると無いとでは速度が全く違う あとセルに書き込みをするのもなるべく回数をまとめること ただし他に開いているファイルの内容次第ではどうしても遅くなってしまうので諦めも必要
96 21/03/28(日)00:02:52 No.787424203
テーブルを使う
97 21/03/28(日)00:03:05 No.787424270
マクロはエクセル操作の記憶で VBAがスクリプト書いての自動化など マクロ記録したあとコード見れるけどVBAに包含されている機能と言えばいいのか…
98 21/03/28(日)00:03:32 No.787424430
VBAがかけるようになればVB6アプリの開発にもそのままスライドしていけるぞやったね! いや冗談じゃなくVB6の需要はあるよ(10数年前に納品したVB6アプリの保守業務を眺めながら)
99 21/03/28(日)00:04:20 No.787424663
>VBAがかけるようになればVB6アプリの開発にもそのままスライドしていけるぞやったね! >いや冗談じゃなくVB6の需要はあるよ(10数年前に納品したVB6アプリの保守業務を眺めながら) しかしVB6インストールできる環境が絶滅しかかって…