【エクセルマクロ】入力規則のリストの何番目か取得:2選

VBA-入力規則リスト何番目-アイキャッチ ExcelVBA

エクセルマクロで、入力規則のリストの何番目か取得するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

入力規則のリストの何番目か取得

以下のExcelVBAを実行すると、入力規則リストの上から何個目を選択しているか調べます。


Sub ドロップダウンリスト何個目の値か確認()

Dim i As Long
Dim j As Long
Dim tmp As Variant

    'セルA2の入力規則リスト内容を取得
    If Cells(2, 1).Validation.Type = xlValidateList Then
        tmp = Split(Cells(2, 1).Validation.Formula1, ",")
    End If
    
    'A2から最終行までループ
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    
        '入力規則リストをループ
        For j = 0 To UBound(tmp)
        
            'A列の値からリストの何番目かチェック
            If Cells(i, 1) = tmp(j) Then
                Cells(i, 2) = j
                Exit For
            End If
        
        Next j
    Next i

End Sub

マクロ実行前

セル [A2:A10] に、入力規則(リスト)を設定しています。

すべて同じ「元の値」を設定しています。


 

マクロ実行後

入力規則の何番目を選択しているか出力します。

「元の値」の1番上は「0」から始まります。

下図の場合「a」は「0」が返ります。


 

入力規則のリストの何番目か取得(入力規則が複数ある場合)

以下のExcelVBAを実行すると、入力規則リストの何番目かを調べます。


Sub 入力規則リスト何番目の項目かチェック()

Dim i As Long
Dim j As Long
Dim tmp As Variant
    
    'A2から最終行までループ
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    
        '入力規則リスト内容を取得
        If Cells(i, 1).Validation.Type = xlValidateList Then
            tmp = Split(Cells(i, 1).Validation.Formula1, ",")
        End If
    
        '入力規則リストをループ
        For j = 0 To UBound(tmp)
        
            'A列の値からリストの何番目かチェック
            If Cells(i, 1) = tmp(j) Then
                Cells(i, 2) = j
                Exit For
            End If
        
        Next j
    Next i

End Sub

マクロ実行前

セル [A2:A10] に、入力規則(リスト)を設定しています。

セルの色ごとに「元の値」が異なります。

・黄色セル  :a,b,c,d,e,f
・青セル   :あ,い,う,え,お
・オレンジセル:りんご,いちご,めろん


 

マクロ実行後

入力規則の何番目を選択しているか出力します。

番号は「0」から始まります。

 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】入力規則を自動処理する方法まとめ
 

【エクセルマクロ】入力規則を自動操作する:超便利5選
...

 

「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載