Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

ドロップダウン リストは、さまざまな Excel 関連のタスクを実行するための非常に便利な機能です。 VBA の実装 は、Excel で操作を実行するための最も効果的、迅速、かつ安全な方法です。この記事では、ドロップダウン リストから値を選択するための 2 つの効果的な方法を紹介します。 VBA マクロを使用して Excel で .

ワークブックをダウンロード

ここから無料の練習用 Excel ワークブックをダウンロードできます。

Excel で汎用リストからドロップダウン リストを作成する

コーディング セクションに入る前に、ドロップダウン リストを作成するための非常に簡単な方法を学びましょう。 汎用リストから エクセルで。 作成したドロップダウン リストを後で利用できるように この記事の例として。

以下は、Excel ワークシートにある一般的なリストです。 反復値があります (例:アップル セル B7 そしてB9 ) に含まれています。

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

値で構成されるドロップダウン リストを作成する方法を見ていきます。 (例: ブドウ、オレンジ、リンゴ、マンゴー、リンゴ ) 一般的なリストから .

手順:

  • まず、任意のセルをクリックします (セル D4 この例では) ドロップダウン リストを保存する場所
  • 次に、[データ] タブをクリックします。 .
  • その後、[データ検証] を選択します データ ツールから リボンのグループ。

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

  • データ検証 ポップアップボックスが表示されます。そこから、
    • リストを選択 許可
    • ソースで 条件、範囲をドラッグ (B5:B9 この場合) ドロップダウン リストの値が含まれます。

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

  • 後で、[OK] をクリックします .

次の画像を見てください。

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

セル D4ドロップダウン リストが作成されています を保持する (例: ブドウ、オレンジ、リンゴ、マンゴー、リンゴ ) 汎用リストから取得 (範囲 B5:B9 ).

VBA を使用して Excel のドロップダウン リストから値を選択する 2 つの方法

このセクションでは、繰り返しの値と繰り返しのない値の両方を含む複数の値をドロップダウン リストから選択する方法を学習します。 VBA を使用した Excel .

1. Excel のドロップダウン リストから複数の値を選択するための VBA の埋め込み (値の繰り返し)

データセットには反復値があります。 値が double であるかどうかに関係なく、ドロップダウン リストですべての値を取得したい場合 、次に以下の手順に従ってください。

手順:

  • 最初に Alt + F11 を押します キーボードで、またはタブ Developer -> Visual Basic に移動します Visual Basic Editor を開く .

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

  • 次に、適切なシート名を右クリックします。 [コードを表示] を選択します 表示されたオプション リストから。

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

  • 次に、コピー 次のコードと貼り付け それをコード ウィンドウに表示します。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValueA As String
Dim ValueB As String
On Error GoTo Exitsub
If Target.Address = "$D$4" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
    Else: If Target.Value = "" Then GoTo Exitsub Else
        Application.EnableEvents = False
        ValueB = Target.Value
        Application.Undo
        ValueA = Target.Value
        If ValueA = "" Then
            Target.Value = ValueB
        Else
            Target.Value = ValueA & ", " & ValueB
        End If
    End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

  • 走るな このコード、保存
  • ワークシートに戻ります 興味を持っている。 作成したドロップダウン リストをクリックすると、 セル D4 で 、ドロップダウンから複数の値を選択できるようになりました (次の gif を見てください)。

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

上の gif からわかるように、特定の値を複数回選択することもできます このVBAで コード。このセクションで提供したマクロ コードにより、ドロップダウン リストですべての種類の値を選択できます。 .

VBA コードの説明

Dim ValueA As String
Dim ValueB As String

変数名の定義。

On Error GoTo Exitsub

エラーが発生した場合は、ラベル Exitsub に移動します .

If Target.Address = "$D$4" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub

宛先をセル D4 に設定します データ検証が含まれています。データ検証を含むセルがない場合は、ラベル Exitsub に移動します .

Else: If Target.Value = "" Then GoTo Exitsub Else

宛先としてセルがない場合は、ラベル Exitsub に移動します .それ以外の場合は、次の行を実行してください。

Application.EnableEvents = False

アプリケーション イベントをオフにして Worksheet_Change マクロの起動を防ぐことができます。そうしないと、潜在的な無限ループが発生する可能性があります。

ValueB = Target.Value

ValueB の定義 変更されたセルの新しい値になります。

Application.Undo

変更されたセルを元に戻す。

ValueA = Target.Value

変更を元に戻すことで、ValueA を定義できるようになりました 変更されたセルの古い値になります。

If ValueA = "" Then
 Target.Value = ValueB

古い値が空白の場合は、新しい値を保存先として保存してください。

Else
 Target.Value = ValueA & ", " & ValueB
  End If
 End If
End If

それ以外の場合は、コンマ (,) で連結して、古い値と新しい値の両方を宛先値に設定します。 )。すべての If を閉じる

Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True

アプリケーション イベントをオンに戻します。

続きを読む: Excel で複数選択可能なドロップダウン リストを作成する方法

類似の読み方:

  • Excel で別のシートからドロップダウン リストを作成する方法 (2 つの方法)
  • Excel で検索可能なドロップダウン リストを作成する (2 つの方法)
  • Excel ドロップダウン リストが機能しない (8 つの問題と解決策)
  • テーブルから Excel ドロップダウン リストを作成する (5 つの例)
  • Excel の自動更新ドロップダウン リスト (3 つの方法)

2.ドロップダウン リストから複数の値を選択するための VBA マクロの適用 (反復値なし)

データセットには反復値があります。ドロップダウン リストで繰り返し値を除くすべての値を取得する場合 、次に以下の手順に従ってください。

手順:

  • 前に示したように、Visual Basic Editor を開きます 開発者から タブ
  • 次に、コード ウィンドウに移動します コードを表示から 右クリックで表示されるオプション ワークシート
  • 次に、コピー 次のコードと貼り付け 指定されたワークシートのコード ウィンドウに表示されます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValueA As String
Dim ValueB As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Address = "$D$4" Then
  If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
  Else: If Target.Value = "" Then GoTo Exitsub Else
    Application.EnableEvents = False
    ValueB = Target.Value
    Application.Undo
    ValueA = Target.Value
      If ValueA = "" Then
        Target.Value = ValueB
      Else
        If InStr(1, ValueA, ValueB) = 0 Then
            Target.Value = ValueA & ", " & ValueB
      Else:
        Target.Value = ValueA
      End If
    End If
  End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

  • 走るな このコード、保存
  • ワークシートに戻ります 興味を持っている。 作成したドロップダウン リストをクリックすると、 セル D4 で 、ドロップダウンから複数の値を選択できるようになりました (次の gif を見てください)。

Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

上の gif からわかるように、特定の値を複数回選択することはできません。 このVBAで コード。このセクションで提供したマクロ コードを使用すると、ドロップダウン リストで繰り返し値を使用せずに値を選択することができます。 .

VBA コードの説明

Dim ValueA As String
Dim ValueB As String

変数名の定義。

Application.EnableEvents = True

アプリケーション イベントをオンに戻します。

On Error GoTo Exitsub

エラーが発生した場合は、ラベル Exitsub に移動します .

If Target.Address = "$D$4" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub

宛先をセル D4 に設定します データ検証が含まれています。データ検証を含むセルがない場合は、ラベル Exitsub に移動します .

Else: If Target.Value = "" Then GoTo Exitsub Else

宛先としてセルがない場合は、ラベル Exitsub に移動します .それ以外の場合は、次の行を実行してください。

Application.EnableEvents = False

アプリケーション イベントをオフにして Worksheet_Change 潜在的な無限ループを引き起こす可能性のあるマクロの起動を防ぐことができます。

ValueB = Target.Value

ValueB の定義 変更されたセルの新しい値になります。

Application.Undo

変更されたセルを元に戻す。

ValueA = Target.Value

変更を元に戻すことで、ValueA を定義できるようになりました 変更されたセルの古い値になります。

If ValueA = "" Then
 Target.Value = ValueB

古い値が空白の場合は、新しい値を保存先として保存してください。

Else
 If InStr(1, ValueA, ValueB) = 0 Then
 Target.Value = ValueA & ", " & ValueB

InStr 関数 文字列内で部分文字列が最初に出現する位置を返します。出力が 0 の場合 次に、コンマ (,) で連結して、古い値と新しい値の両方を宛先値に設定します。 ).

Else: Target.Value = ValueA
    End If
   End If
  End If
 End If

それ以外の場合は、古い値を宛先として設定します。すべての If を閉じる

Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True

アプリケーション イベントをオンに戻します。

続きを読む: 選択に応じた Excel ドロップダウン リスト

結論

結論として、この記事では、ドロップダウン リストから値を選択する方法に関する 2 つの効果的な方法を紹介しました。 VBA マクロを使用して Excel で .この記事があなたにとって非常に有益であることを願っています。このトピックに関する質問はお気軽にどうぞ。

関連記事

  • Excel で数式に基づいてドロップダウン リストを作成する方法 (4 つの方法)
  • Excel の条件付きドロップダウン リスト (作成、並べ替え、使用)
  • IF ステートメントを使用して Excel でドロップダウン リストを作成する方法
  • セルの値を Excel のドロップダウン リストにリンクする (5 つの方法)
  • Excel でドロップダウン リストを削除する方法

  1. Excelでセル値に基づいてドロップダウンリストを変更する方法(2つの方法)

    特定の値に基づいて特定のデータを抽出するには、ドロップダウン リストを使用する必要がある場合があります。さらに、2 つ以上の従属ドロップダウン リストを関連付ける必要があります。 .この記事では、Excel でセルの値に基づいてドロップダウン リストを変更する方法を紹介します。 Excel でセル値に基づいてドロップダウン リストを変更する 2 つの適切な方法 以下のセクションでは、 2 を強調します。 ドロップダウン リストを変更する最適な方法。 まず 、 OFFSET を適用します と マッチ ドロップダウン リストの関数を使用して、セルの値に基づいて変更を行います。 さらに 、 X

  2. Excel でドロップダウン リスト付きのデータ入力フォームを作成する方法 (2 つの方法)

    Microsoft Excel では、データ入力、電卓などのさまざまなフォームを作成できます。これらのタイプのフォームは、データを簡単に入力するのに役立ちます。また、多くの時間を節約できます。 Excel のもう 1 つの便利な機能は、ドロップダウン リストです。限られた値を何度も入力すると、プロセスが多忙になる可能性があります。ただし、ドロップダウン リストでは 、値を簡単に選択できます。今日、この記事では、データ入力の方法を学びます Excel のドロップダウン リストを含むフォーム 適切なイラストで効果的に。 Excel でドロップダウン リスト付きのデータ入力フォームを作成する 2 つ