VBAの効率化(というより基本的な書き方?)についての質問です。
以前作成したコードを再度流用することとなり、知識0の状態で作っていた酷い有様のコードを
ちょっとはマシな形にしようと修正作業を行っています。
内容としては
ブックAAAの特定の行に○がついていれば同じ行のデータをブックBBBへコピーする
というものです。※○は1~100行の中の1行にしか存在しません。
以前作成したものが↓
VBA
1For B = 1 to 100 2 If Workbooks(AAA).Worksheets("シート1").Cells(B, 2).Value = "○" Then 3 Workbooks(AAA).Worksheets("シート1").Activate 4 Range(Cells(B, 6), Cells(B, 12)).Copy 5 Workbooks(BBB).Worksheets("シート1").Activate 6 Range("AO12:AU12").Select 7 Selection.PasteSpecial Paste:=xlPasteValues 8 End If 9Next B
今回修正を行ったものが↓
VBA
1Dim tempA(50) As Variant 2For B = 1 to 100 3 If Workbooks(AAA).Worksheets("シート1").Cells(B, 2).Value = "○" Then 4 Workbooks(AAA).Worksheets("シート1").Activate 5 For A = 6 To 12 6 temp(A) = Cells(B, A).Value 7 Next A 8 Workbooks(BBB).Worksheets("シート1").Activate 9 For A = 6 To 12 10 Cells(B, A + 35).Value = temp(A) 11 Next A 12 Exit For 13 End If 14Next B
です。
単純にコピー→ペーストだったものを、一度配列に入れてからまとめてセルに代入する形にしました。
(配列もちょっとおかしい使い方ですが、こうでないと頭の中でこんがらがってしまうのです…)
このような処理を行う場合の方法としては修正後のような方法であっているのでしょうか。
日々勉強しながらコードを書いている為、サイトによって方法がバラバラで自身ではよくわかっていない状況です。。。
【改めて今回の質問内容】
①今回の修正後コードの効率は100点満点で採点すると何点ほどになりますか?(回答者様の主観で結構です)
②修正後コードを改善(またはまったく別の方法へ変更)するとした場合、どのようなやり方が考えられますか?
③「VBAの勉強をするならこのサイト!」のようなものがありましたらお教え下さい。
以上、長文乱文申し訳ございませんが皆様のお力をお貸し頂ければ幸いでございます。
追記
【使用環境】
Windows 7 Pro 32bit
Microsoft Excel 2010
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/24 02:05