VBA100本ノック 33本目:マクロ記録の改修
こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
自分もマクロを覚えたての頃は、全コードに占めるマクロの記録が7~8割を
越えることなんてザラだった。だから今でも、「マクロを見て欲しい」と言わ
れこのようなコードをお見掛けしても、決して否定はしない。多くの人が辿る
道なのだから(賛否両論あり)。
また、このような「撮りたて生コード」をどう調理するかは、その方の習熟度
を測る指標にもなると思う。
ということで、今の私はこんな感じだ。
Sub VBA_100Knock_033() Dim Sh As Worksheet Set Sh = Sheets("データ") Dim rMax As Long rMax = Sh.Cells(Rows.Count, 1).End(xlUp).Row Dim TargetRange As Range Set TargetRange = Range(Sh.Cells(2, 1), Sh.Cells(rMax, 1)).Resize(, 6) Application.ScreenUpdating = False TargetRange.Columns(4) = "=IFERROR(VLOOKUP(RC[-2],マスタ!C[-3]:C[-1],2,FALSE),"""")" TargetRange.Columns(5) = "=IFERROR(VLOOKUP(RC[-3],マスタ!C[-4]:C[-2],3,FALSE),"""")" TargetRange.Columns(6) = "=RC[-1]*RC[-3]" ' VLOOKUPの計算結果を値に変更。 Sh.UsedRange.Value = Sh.UsedRange.Value Application.ScreenUpdating = True Range("A1").Select End Sub
ということで、原文よりも行数が増えてしまった。今はこれが精一杯。
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。