分配链接的单元格时Excel VBA:列表框错误

我有一些数据validation单元格。 由于下拉列表很小,很难阅读,因此我有一个button,它打开一个列表框并使用单元格的“数据validation”列表填充它。

Dim btnAddToList As OLEObject Public lboTemp As OLEObject Set btnAddToList = ws.OLEObjects("btnAddToList") Set lboTemp = ws.OLEObjects("TempListBoxS") Set Field = Selection ' This is always cell $D$1, $D$2, or $D$3 btnAddToList.Visible = False 'Create a named range "temp" ActiveWorkbook.Names.Add Name:="temp", RefersTo:=Field.Validation.Formula1 ' open list box ' position list box ' load it with "temp" With lboTemp 'show the listbox with the list .Visible = True .Left = Field.Left .Top = Field.Top + 50 .ListFillRange = "temp" .Object.MultiSelect = 0 ' Single select On Error GoTo errHandler prev = .LinkedCell If prev <> "" Then prev = prev & ": " & Range(.LinkedCell).Value ' for debugging .LinkedCell = Field.Address 'SOMETIMES THIS GIVES Err 440: could not set property value, invalid property value .Width = Field.Width + 5 .Height = WorksheetFunction.Min(270, .Object.ListCount * 20) 'field.Height + 5 End With 

正如在上面的评论中指出的,我有时(但并非总是),当LinkedCell应该由Field.Address填充时,我得到一个错误。

此代码由六个不同的单元格(两个不同的工作表上的D1:D3)使用,但是只有其中一个D1单元格是所选的一个出现错误。 这些单元格还有一个共同点:它们的数据validation列表分别是:='Category Table'!$ F $ 2:$ F $ 31 and ='Category Table'!$ F $ 32:$ F $ 41

其他四个单元格 – 没有得到错误 – 使用一个复杂的dynamic范围,引用“分类表”表单上的不同表格。 (我真的不认为这和我的问题有什么关系,但是我没有看到这些单元有什么共同之处)

如果没有人能给我一个答案,我将不胜感激关于如何追查间歇性问题的build议。

谢谢!

也许问题是Field.Address的返回。 .Adress属性默认返回行和列的绝对值。 您可以尝试Field.Address(RowAabsolute:=false, ColumnAbsolute:=false) 。 希望这个帮助。 对不起我的英语。

我设法通过确保链接的单元格在创build引用之前为空来阻止此问题。