Excel

【Excel】VBAマクロでリストボックスを値をセット(複数列の範囲選択)や変更、削除の方法【ListBox,AddItem,List,Clear,RemoveItem】

当サイトでは記事内に広告を含みます。

この記事ではVBAマクロでリストボックスをセット(複数列の範囲選択)や変更、削除の方法について解説していきます。

ポイントとしては、ListBox、AddItem、List、Clear、RemoveItemを使用することです。

なお、マクロ初心者でもわかりやすいように変数名をaaaaa変数aaaaaといった名称にしています。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

 

VBAマクロのリストボックスでセル中の複数列の値をセットする方法【BからE列、各列の最終行までの範囲を選択し、リストボックスにセットしてみる】

それではまず、VBAマクロのリストボックスでセル中の複数列の値をセットする方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub aaaaamultipleColumnsaaaaa()
    '変数を宣言
    Dim aaaaalistBoxaaaaa As msforms.ListBox
    Dim aaaaarowaaaaa As Long
    
    'リストボックスをクリア
    Set aaaaalistBoxaaaaa = ActiveSheet.ListBoxes("リストボックス1")
    aaaaalistBoxaaaaa.Clear
    
    'B列からE列の最終行までのデータを取得し、リストボックスにセット
    aaaaarowaaaaa = Range("B2").End(xlDown).Row
    For i = 2 To aaaaarowaaaaa
        aaaaalistBoxaaaaa.AddItem Range("B" & i).Value & " " & _
                                   Range("C" & i).Value & " " & _
                                   Range("D" & i).Value & " " & _
                                   Range("E" & i).Value
    Next i
    
    'リストボックスにデータがセットされたことをメッセージボックスで表示
    MsgBox "B列からE列の最終行までの範囲のデータをリストボックスにセットしました。", vbInformation
End Sub

 

コードのAlt+F8を押し、マクロ選択画面でaaaaamultipleColumnsaaaaa関数を実行します。

このコードでは、まずリストボックスをクリアし、その後B列からE列の最終行までのデータを取得しています。

取得したデータは、For~Nextループを使用してリストボックスにAddItemメソッドでセットしています。

最後に、データがセットされたことをMsgBoxで表示しています。

【使用した関数:ListBox,AddItem】

はい、ご要望の形式に従って、リストボックスの3列目と4列目を削除するコードを書いてみましょう。

VBAマクロでリストボックスの内容を削除、変更する方法【上のc,d列を削除し変更する方法】

ここでは、リストボックスにセットされているアイテムの3列目と4列目を削除する方法について解説します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub aaaaaaremoveColumnsaaaaaa()
    '変数を宣言
    Dim aaaaaalistBoxaaaaaa As msforms.ListBox
    Dim aaaaaatempArrayaaaaaa() As String
    Dim aaaaaai As Long, j As Long
    
    'リストボックスの参照を取得
    Set aaaaaalistBoxaaaaaa = ActiveSheet.ListBoxes("リストボックス1")
    
    'リストボックス内の各アイテムの3列目と4列目を削除
    For aaaaaai = 0 To aaaaaalistBoxaaaaaa.ListCount - 1
        aaaaaatempArrayaaaaaa = Split(aaaaaalistBoxaaaaaa.List(aaaaaai), " ")
        aaaaaalistBoxaaaaaa.List(aaaaaai) = aaaaaatempArrayaaaaaa(0) & " " & aaaaaatempArrayaaaaaa(1)
        
        '残りの列を詰める
        For j = 2 To UBound(aaaaaatempArrayaaaaaa) - 2
            aaaaaalistBoxaaaaaa.List(aaaaaai) = aaaaaalistBoxaaaaaa.List(aaaaaai) & " " & aaaaaatempArrayaaaaaa(j + 2)
        Next j
    Next aaaaaai
    
    MsgBox "リストボックス内の各アイテムの3列目と4列目を削除しました。", vbInformation
End Sub

コードのAlt+F8を押し、マクロ選択画面でaaaaaaremoveColumnsaaaaaa関数を実行します。

このコードでは、まずリストボックスの参照を取得しています。
次に、For~Nextループを使用して、リストボックスの各アイテムを処理しています。

各アイテムの文字列をSplit関数で配列に分割し、1列目と2列目のみを残してリストボックスのアイテムに再セットしています。

その後、もう1つのFor~Nextループを使用して、5列目以降のデータを詰めています(つまり3列目と4列目を削除)。

最後に、処理が完了したことをMsgBoxで表示しています!

 

まとめ VBAマクロでリストボックスをセット(複数列の範囲選択)や変更、削除の方法【ListBox,AddItem,List,Clear,RemoveItem】

以上で、リストボックスの特定の列を削除する方法の解説は終わりです。
Split関数を使って文字列を配列に分割することで、リストボックス内の各アイテムを柔軟に編集できます。

ぜひ実際にコードを試してみて、理解を深めてくださいね。