火曜日, 9月 26, 2023

Excel VBA 23 
マクロの記録はショートカットで宝の山

マクロをタイピングしなくても「マクロの記録」で生成されたソースを、そのままショートカットで利用するだけでも超便利です。例えば、実際に私が利用しているマクロとして・・・

住所データから都道府県とそれ以外を抜き出して整理します。
C2セルは
=IF(MID(B2,4,1)="県",LEFT(B2,4),LEFT(B2,3))

D2セルは
=IF(MID(B2,4,1)="県",MID(B2,5,LEN(B2)-4),MID(B2,4,LEN(B2)-3))

あとはフィルするだけです。


上は処理結果です。ここで元になったB列を削除するとC列D列のデータはエラーにってしまいます。

そこで数式を値に変換するのですが、これをマクロの記録で作成します。

Sub Macro1()
' Macro1 Macro
' Range("C2:D21").Select
Selection.Copy
Selection.PasteSpecial Paste :=xlPasteValues, Operation _
        :=xlNone, SkipBlanks :=False, Transpose:=False
End Sub

上がマクロの記録で生成されたマクロです。_はソースの改行マークです。
※ソースの表示を少し整理しています。

完成したマクロは選択したセルに対しての処理なので、ソース中・・・
Range("C2:D21").Select
の部分は汎用処理には不適切なので削除します。
下が最終的なマクロのソースです。

Sub Macro1()
' コピー&値ペースト
Selection.Copy
Selection.PasteSpecial Paste :=xlPasteValues, Operation _
        :=xlNone, SkipBlanks :=False, Transpose:=False
End Sub

これで処理したいセルを選択し、マクロを実行すれば・・・

数式は値に変換されます。