我试图在列(H)中搜索值,如果有值,则返回列C中的值并将其分配给变量。
我想使用For循环来搜索结果(该列大部分是空白的)。在有结果的地方,我想为每个结果创建一个新的变量,以供以后使用。永远不会有超过5个结果。这是我尝试过的方法,但是把变量名放在一起对我不起作用。
Dim xDat1 As String
Dim XDat2 As String
Dim xDat3 As String
Dim xDat4 As String
Dim xDat5 As String
d = 1
For i = 186 To 235
If Not wsElog2.Range("H" & i) Is Nothing Then
'get result from column C, and assign to a variable (xDat + the d value).
xDat & d = wsElog2.Range("C" & i).Text
'the above is showing red error - not sure how to put xDat and d together
End If
d = d + 1
Next i
4条答案
按热度按时间fbcarpbf1#
你的主要问题是线路
其中不检查相应单元格是否为空...
Is Nothing
应该只用于对象,你试着检查一个对象的值(一个Range
),它永远不会是Nothing
。第二个问题是你不能通过连接来构建变量名...
所以,请测试下一个改编的代码。它将使用一个
Scripting.Dictionar
来保存你需要的变量:下一个版本能够模拟构建变量的方式,但现在,作为一个字符串,它可以工作:
7lrncoxx2#
使用数组代替许多编号变量
For...Next
)**For Each...Next
)**u5i3ibmn3#
简单的答案是,如果你知道不超过5个,就使用一个数组,像这样:
但是,使用
List(Of String)
可能更好,因为这会给予您的代码稍微更清晰,并且可以在超过5个的情况下消 debugging 误。zvms9eto4#
你不能以这种方式引用变量,这是有原因的。声明一个数组而不是变量。将数组重新调整为所需的大小,然后使用i变量依次寻址数组中的每个元素。
下面是如何声明数组和调整数组大小的方法
由于
i
循环不是从1开始,所以不应该使用i
作为数组索引。相反,可以使用d
变量,这样就可以