コンボボックス (ワークシートにドラッグ) にダイナミック レンジの値を入力しようとしています。
通常 'ThisWorkbook.Names("NAME_OF_RANGE").RefersToRange' は機能しますが、私のダイナミック レンジでは失敗します!
私は別の解決策を試しました(以下のコードを参照)が、ワークシート名が参照から削除されます(したがって、間違ったデータが入力されています)
Public Sub FillCombobox(cboComboBox As ComboBox, sRange As String)
'Remember current selected item
Dim sSelectedItem As String
sSelectedItem = cboComboBox.Text
'Empty the combobox
cboComboBox.Clear
cboComboBox.AddItem "---pick one---"
'Get the data from the dynamic range
Dim oListFillRange As Range
'This line will throw an error:
Set oListFillRange = ThisWorkbook.Names(sRange).RefersToRange 'Does not work with a dynamic range!!!
''Set oListFillRange = Range(Application.Evaluate(ThisWorkbook.Names(sRange).RefersTo).Address) 'Works with dynamic ranges on the SAME SHEET (as the sheetname is stripped out!)
'Fill combobox
Dim oRange As Range
For Each oRange In oListFillRange
cboComboBox.AddItem oRange.Value
Next oRange
'Set previous selected item
Dim i As Integer
For i = 0 To cboComboBox.ListCount - 1
If cboComboBox.List(i) = sSelectedItem Then
cboComboBox.ListIndex = i
Exit for
End If
Next i
If cboComboBox.ListIndex = -1 Then cboComboBox.ListIndex = 0
End Sub
では、'ThisWorkbook.Names("NAME_OF_RANGE").RefersToRange' を動的範囲で動作させるにはどうすればよいでしょうか?