Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9095 / 76737 ←次へ | 前へ→

【73208】Re:VBAはじめてです。
発言  UO3  - 12/11/30(金) 10:51 -

引用なし
パスワード
   ▼うどん さん:

こんにちは

直接の原因は上で申し上げたようなことでしょうがいくつか気になる点がありますので
老婆心かもしれませんが。

・変数をすべて Variant型で宣言しておられます。これぐらいの処理ですから効率としてどうこういう
 ものではありませんが、数値は Long型、セルは Range型で宣言しておいたほうが、効率もよろしいですし
 また、コードを見たときのわかりやすさも向上すると思います。

・コードの中で Target 以外に Selection を使っておられますね。何か意図はあるのでしょうか?
 たとえば、まず、セル領域を選択しておいて、そのなかを(選択を保ったまま)カーソルを動かし
 どこかのセルに入力する。Targetは、入力されたセル、Selectionは、選択されているセル領域。
 そんな制御を意図しておられるのですか?
 もし、そうでなければ、(変更セル数が1つの時のみ処理対象にしておられますので)
 すべて Target で記述されたほうがわかりやすいですね。

・コードの中で "B1:B20000" や "I2:I300" と、領域の最後を固定にした記述をされていますね。
 この固定領域に意味があるなら、それでよろしいのですが、もしかして B列のデータ最終セルまでとか
 I列のデータ最終セルまでということなら、別途、その場所を動的に取得する書き方のほうが、
 データの増減(特に、増)があったときもコードを書きなおさずに済むので、おすすめです。

・これも、この程度の処理ですから、あまり違いはでませんが、Find は検索系の処理の中でも
 「もっとも重い」処理の1つです。検索が1回だけですのでワークシート関数の Match のほうが、軽いと思いますね。

・あと、転記先セル = 転記元セル という書き方をしておられますね。
 これでも、そのセルの Value が対象になりますが、わかりやすさということであれば
 転記先セル.Value = 転記元セル.Value という記述がよろしいかと。

0 hits

【73206】VBAはじめてです。 うどん 12/11/30(金) 4:46 質問
【73207】Re:VBAはじめてです。 UO3 12/11/30(金) 6:47 発言
【73213】Re:VBAはじめてです。 うどん 12/12/1(土) 4:42 お礼
【73208】Re:VBAはじめてです。 UO3 12/11/30(金) 10:51 発言
【73214】Re:VBAはじめてです。 うどん 12/12/1(土) 4:44 お礼
【73209】Re:VBAはじめてです。 UO3 12/11/30(金) 13:59 発言
【73215】Re:VBAはじめてです。 うどん 12/12/1(土) 4:45 お礼

9095 / 76737 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free