[英]Excel VBA error when using dynamic ranges
我正在嘗試用動態范圍的值填充組合框(拖到我的工作表上)。
通常,“ 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'以使用動態范圍?
通過Range
屬性引用Range
。
Set oListFillRange = Sheets("mySheet").Range(sRange) 'where mySheet is the relevant sheet name
有關更多信息, RefersToRange
不起作用的原因是因為公式中沒有動態范圍的范圍,因此excel屬性無法讀取實際范圍。 因此,直接引用范圍是唯一的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.