VBA100本ノック 3本目:セルの消去

こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。

上記リンク先から、問題文を転載。
f:id:Infoment:20220107232433p:plain

ラベル行や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

解答を実行した結果がこちら。
f:id:Infoment:20220107234701g:plain

※冒頭リンク先の解答例および解説も、ぜひご一読ください。

参考まで。