選択範囲からカスタム リストを作成する Excel VBA マクロ

選択範囲からカスタム リストを作成する Excel VBA マクロ

こんにちは。Excel のカスタム リストに選択を追加するマクロの作成を手伝ってくれる人はいませんか。通常、これを行うには、1 つの列で一連の行を選択し、ファイル、オプション、詳細設定の順に進み、一番下までスクロールしてカスタム リストの編集をクリックします。マクロ クリエーターをオンにしてこれを実行すると、選択した特定のセルに関連する非常に単純なスクリプトしか表示されません。現在選択しているものを使用してカスタム リストに追加するようにコードを調整したいと思います。そうすれば、常に J4-J9 の範囲に縛られることはありません。以下は、私が受け取ったコードです。

Sub Customlistadd()
'
' Customlistadd Macro
'
' Keyboard Shortcut: Ctrl+Shift+I
'
    Application.AddCustomList ListArray:=Range("J4:J8")
End Sub

j4:j8 の代わりに現在の選択を追加するだけという簡単なことでしょうか? もしそうなら、それを正確にどのように記述すればよいのでしょうか? まず、現在のセクションを保持するための変数型を宣言する必要がありますか? 私がやろうとしていることと同じようなことをしようとしていると思われる、私が見たほとんどすべての例では、現在の選択範囲を保持するために変数を使用する傾向があります。ありがとうございます。

答え1

コードを変更してSelection、現在選択されているセル(1つ以上選択されている場合)を常に含めるオブジェクトを使用します。つまり、

Application.AddCustomList Selection

また、カスタム リストには数字ではなく文字のみが含まれていることを確認してください。たとえば、A、B、C、D、E、F、G、... または A1、A2、A3、A4、A5、A6、... は問題ありませんが、1、2、3、4、5 は問題があります。

答え2

これを試して

Public Sub CreateCustomList()
  Dim v As Variant
  Dim rng As Excel.Range

  Set rng = ActiveSheet.Range("A1:A3")

  'Transpose from 2 dim array to 1 dim array
  v = Application.Transpose(Selection)

  'Add the custom list
  Application.AddCustomList v

End Sub

答え3

これをカスタムリストの追加、取得、削除で試してください。ヒント: 空白のセルはカウント可能な順序として扱われるため、空白のセルを使用しないでください。

Sub CoustomList()

    Dim Arr() As Variant
    Dim N As Long    
    Application.AddCustomList ListArray:=Sheet1.Range("A2:A4")
    Arr = Sheet1.Range("A2:A4")
    N = Application.GetCustomListNum(Arr)
    Application.DeleteCustomList N

End Sub

関連情報