私がよく使うコードをまとめました。
1.最終行取得
繰り返し処理をするときに多用する最終行取得コード。シートの最終行から上に向かってCtrl+
cells(Rows.Count,1).End(xlUp)
Rows.Countは、シートの最終行のことを言います。Excel2003なら65,536 Excel2007以降なら1,048,576です。
Rows.Countの次の「1」は1列目を意味します。つまりA列です。
End(xlUp)は、Ctrl+↑を意味します。
2.条件分岐、多肢条件分岐(If,ElseIf,select case)
一番簡単な条件分岐
If 条件 Then
条件が真の場合の処理
Else
条件が偽の場合の処理
End If
一つの条件だけの分岐の書き方です。他にも条件(多肢条件)があった場合はどうしたらいいのかを次に書きます。
’多肢条件分岐1
If 条件① Then
条件①が真の場合の処理 A
ElseIf 条件②
条件②が真の場合の処理 B
Else
全ての条件が偽の場合の処理 C
End If
上から順番に処理をするため、条件①に当てはまればAの処理を行うが、条件①に当てはまらなければ条件②にあてはまるか確認し当てはまればBの処理を行う。どれにも当てはまらなければCの処理を行う。
’多肢条件分岐2
Select Case 変数・数式
Case 条件①
条件①が真の場合
Case 条件②
条件②が真の場合
Case 条件③
条件③が真の場合
End Select
個人的には条件が複雑になれば「Select Case」を使う方がすっきりして読みやすと思う。
3.形式を選択して貼り付け(PasteSpecial)
Range.PasteSpecial( Paste , Operation , SkipBlanks , Transpose )
具体的な書き方は、Range(“A1”).pasteSpecial(xlPasteValues) で値を貼り付けることができる。
Paste
xlPaseteAll | 全てを貼り付け |
xlPaseteValues | 値を貼り付け |
Operation
xlPasteSpecialOperationAdd | 加算 |
xlPasteSpecialOperationSubtract | 減算 |
xlPasteSpecialOperationMultiply | 乗算 |
xlPasteSpecialOperationDivide | 徐算 |
SkipBlank
True / False | 空白セルの貼り付けを対象としないかどうか Trueは貼り付けしない。 規定値はFalse |
Transpose
True / False | 行列を入れ替えるかどうか Trueは入れ替えをする。 規定値はFalse |
4.高速化(画面非更新)
マクロを実行中、画面が変化すると描写するのに時間がかかってしまうため、画面描写をしない(画面非更新)ことで高速化することができます。
Application.ScreenUpdating=False
FalseをTrueにすることで画面を更新に変更できます。マクロの実行が終わると自動的にTrueに変わります。
5.警告や確認の停止
Excel操作をしていると確認のためにポップアップが出てくることがあります。例えば、シートを削除する時に、確認メッセージがでてきます。それを表示させずに処理を進めるためのコードです。
Application.DisplayAlerts=False
6.計算モードの切り替え
'自動計算
Application.Calculation=xlCalculationAutomatic
’手動計算
Application.Calculation=xlCalculationManual
7.再計算させる
’最小限の再計算を行う
Application.calculate
'全ての関数の再計算を行う
Application.calculateFull
コメント