私は初心者ですので、もうしばらくお待ちください。ケース番号と関連する名前の長いリストが1つのシートにあり、ケース番号ごとに複数の名前があります。ブックのさまざまな場所で、ユーザーがドロップダウンリストからケース番号を選択し(動的な名前付き範囲を使用できます)、別のドロップダウンで関連付けられた名前の1つを選択するようにします。
ケース番号が非常に多く、それらが変化するため、2番目のドロップダウンに名前付き範囲を使用することはできません。これを行うVBAの方法はありますか?
私は初心者ですので、もうしばらくお待ちください。ケース番号と関連する名前の長いリストが1つのシートにあり、ケース番号ごとに複数の名前があります。ブックのさまざまな場所で、ユーザーがドロップダウンリストからケース番号を選択し(動的な名前付き範囲を使用できます)、別のドロップダウンで関連付けられた名前の1つを選択するようにします。
ケース番号が非常に多く、それらが変化するため、2番目のドロップダウンに名前付き範囲を使用することはできません。これを行うVBAの方法はありますか?
ケース番号がSheet2の行1にあり、各ケース番号の下に関連付けられた名前があり、ケース番号のドロップダウンがセルB1
にあり、関連付けられた名前のドロップダウンがセルにあるB2
(リストListNamesのデータ検証として定義されている)と仮定して、次のワークシートを使用しますのデータ検証を更新するマクロB2
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rgNames As Range, rgFoundCase As Range
If Not Intersect(Target, [B1]) Is Nothing Then
'turn off updates to speed up code execution
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Set rgFoundCase = Sheets("Sheet2").Rows(1).Find(What:=[B1], After:=Sheets("Sheet2").Cells(1, 1), LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Set rgNames = rgFoundCase.Offset(1).Resize(rgFoundCase.End(xlDown).Row - 1)
ActiveWorkbook.Names.Add Name:="ListNames", RefersTo:=rgNames
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
End With
End If
End Sub