VBATips

ユーザーが指定した列の削除を行う【ExcelVBA】

ユーザーが指定した列を削除したい

単純に列削除は下記のどちらかで可能です。
Columns("A").Delete
Columns(1).Delete

プログラム内に組み込めば特に難しい処理ではありませんが、
削除する列をユーザー側に指定させる組み方を推奨します。
プログラムは開発者の独りよがりになり、完成して終わりでは悲しいものです。
ユーザーが円滑に進める事が大事と考えています。

ただ、ユーザーからの問い合わせは極力避けたいため、ユーザーが簡単に使える設定を入れる必要があります。

ユーザーが指定した列を削除するサンプルコード

アクティブシートのA2~A列最終行までに入力された指定列の削除を行うサンプルです。

Public Sub sample_user_defined_column_delete()
    Dim ws As workshet: Set ws = ThisWorkbook.ActiveSheet
    
    Dim arr As Variant
    Dim i As Long
    Dim k As Long: k = 0
        
    '■ユーザー指定した列を配列に入れる
    ReDim arr(k)
    For i = 2 To Call_LastRowWs(5, ws) '5列目2行目から最終行
        arr(k) = Call_ColConv(ws.Cells(i, 5)) '5列目
        k = k + 1
        ReDim Preserve arr(k)
    Next i
    ReDim Preserve arr(k - 1)
    
    '■配列を昇順並替
    Call Call_QuicksSort(arr, LBound(arr), UBound(arr))
    
    '■指定したシートの列削除(今回はwsDel)
    For i = UBound(arr) To LBound(arr) Step -1
        wsDel.Columns(arr(i)).Delete
    Next i

End Sub

注意点

関連記事

ワークシート名を変数にSetし、短い名前で利用する【マクロ初級者必読】
指定行(ヘッダー行)以下を全て削除する【ExcelVBA】
ループ中に条件を満たす列の列削除を行う【ExcelVBA】
ループ中に条件を満たす行の行削除を行う【ExcelVBA】

コメント

タイトルとURLをコピーしました