【发布时间】:2011-12-06 09:42:43
【问题描述】:
我必须根据其他组合框中的选定值填充几个组合框。我想要的是用所选名称的活动填充框。我比较某个名称是否在一行中,然后使用偏移量获取活动名称并将其写入数组。它不起作用可能与偏移有关,或者活动单元格的合并可能是一个问题。这是我的代码:
Function FindingActivities(ExpName)
Dim ActNames(500) As String
Dim i As Integer
Dim CurrContent As String
For Each cell In Range("B7").EntireColumn.cells
If cell.Value <> "" Then
If ExpName = cell.Value Then
CurrContent = Left(cell.Offset(0, -1).Value, 2)
If CurrContent = "Ac" Then
ActNames(i) = cell.Offset(0,-1).Value
i = i + 1
End If
End If
End If
Next cell
FindingActivities = ActNames()
End Function
这是填充组合框的代码:
Private Sub ComboBox1_Change()
Dim ExpName As String
ExpName = ComboBox1.Value
Dim ActNames() As String
ActNames = FindingActivities(ExpName)
For i = 0 To UBound(ActNames)
If ActNames(i) <> "" Then
ComboBox3.AddItem ActNames(i)
End If
Next
End Sub
有人有想法吗?
【问题讨论】:
-
哪个部分不工作?你是如何声明你的变量的?
-
我为函数添加了附加代码。不工作的部分是 CurrContent 是空的,尽管活动名称应该在那里。
-
CurrContent总是 是一个空字符串吗?您是否尝试过设置断点并调试代码?例如关注cell.Offset(0, -1).Value?听起来您只需要这样做,您就会自己发现错误。 -
是的 CurrContent 总是空的,但我不知道为什么。 - 一段时间后 - 我取消合并单元格并将活动名称放在具有名称的单元格旁边并找到它。合并的单元格是问题所在。
-
有很多潜在的问题。例如,如果你在一个单元格中调用它,你试图将一个 500 个字符串数组转储到一个单元格中,这将不起作用。充其量,它只会给你第一个元素。