こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
ラベル行やNo.列を残して処理するのは、日常でもよくある状況と思う。
ということで、作成した解答がこちら。
Sub VBA_100Knock_003() ' 表全体を変数に格納。 Dim TableRange As Range Set TableRange = Range("A1").CurrentRegion ' 表の領域をオフセットさせたうえで、一行一列ずつ ' 縮めることで指定領域を得る。 Dim TargetRange As Range Set TargetRange = TableRange _ .Resize(TableRange.Rows.Count - 1, _ TableRange.Columns.Count - 1) _ .Offset(1, 1) ' 指定領域の値を削除。 TargetRange = vbNullString End Sub
ちなみに、昔作成した「数学の集合」に関するクラスモジュールを使用した
パターンがこちら。
infoment.hatenablog.com
Sub VBA_100Knock_003() Dim TargetRange As Range Set TargetRange = Range("A1").CurrentRegion ' 範囲Bから範囲Aを除去した結果を得るためのクラス。 Dim MaS As VBAProject.MathSet Set MaS = New VBAProject.MathSet ' 一列目を取り除いた範囲を得る。 Set TargetRange = MaS.GetDifferenceRange(TargetRange.Columns(1), TargetRange) ' 一列目を取り除いた範囲を得る。 Set TargetRange = MaS.GetDifferenceRange(TargetRange.Rows(1), TargetRange) ' 指定領域の値を削除。 TargetRange = vbNullString End Sub
解答を実行した結果がこちら。
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。