【发布时间】:2016-08-18 23:27:36
【问题描述】:
我有一个组合框,我正在尝试使用 Excel 工作表中的范围来填充。我提取该列的最后一行,然后将该范围内的所有值添加到组合框中。问题是,如果只有一个条目,Excel 将只从数组中提取单个值作为字符串,而不是变量数组。
这会导致类型不匹配,因为它试图将值作为字符串分配给变量数组。有没有办法显式请求变体数组而不是字符串值?
这里是原始代码:
Dim hvVals() As Variant
lastRow = getLastRowInCol(Sheets("MySheet"), "B")
hvVals = Sheets("MySheet").Range("B2:B" & CStr(lastRow)).value
If Not isEmpty(hvVals) And lastRow <> 1 Then
Me.CECB.list = hvVals
这是我对解决方案的尝试,但这确实会减慢我的代码速度,而且我不知道它是否非常健壮:(此外,表格中的第一行在技术上是 2,这就是它在if statement)
Dim hvVals() As Variant
lastRow = getLastRowInCol(Sheets("MySheet"), "B")
If lastRow = 2 Then
ReDim hvVals(1) As Variant
hvVals(0) = Sheets("MySheet").Range(hvCol & "2:" & hvCol & CStr(lastRow)).value
Else
hvVals = Sheets("MySheet").Range(hvCol & "2:" & hvCol & CStr(lastRow)).value
End If
If Not isEmpty(hvVals) And lastRow <> 1 Then
Me.CECB.list = hvVals
【问题讨论】:
-
当你选择一个(多单元格)范围的值时,你会得到一个二维变量数组(1 到 #rows,1 到 #columns):如果你想为单个单元格模拟它您还需要一个二维数组(1 对 1、1 对 1)