提问人:Andres Cobos 提问时间:7/1/2023 最后编辑:Andres Cobos 更新时间:7/1/2023 访问量:56
Excel VBA 用于带有 IF 和变量的嵌套循环
Excel VBA For Nested Loop with IF and variables
问:
我有 10 条可以使用的真空感应线(VacLine(x) 变量),这些是位于多选列表框上的奇数(从 1 到 19)。根据这些选项的选择,我想为 10 个 VacLine(x) 变量中的每个变量分配一个值。
在这种情况下,将从 ListBox 中选择驱动编号,找到该编号后,它应该将其分配给 VacLine(x),然后从它计数的最后所选值转到下一个 x。最小选择是 1,最大选择是 10,而不是按特定顺序。
例如,我选择了 3、17 和 19,然后 VacLine1 = 3,VacLine2 = 17 和 VacLine3 = 19,VacLine4 到 VacLine10 = 0。
VacLinesList 是我的 ListBox。
VacLine(x) 是我的变量 Dimmed 为Dim VacLine(1 To 10) As Integer
With VacTC.VacuumLinesList
For q = 1 To 10
v = 0
For v = v To .ListCount - 1
If VacLine(q) = "" Then
If .Selected(v) Then
VacLine(q) = .List(v)
Exit For
End If
Exit For
End If
Next v
Next q
End With
我不知道如何强制它将找到的值分配给 VacLine(x),然后转到下一个 x,但从最后找到的选定值开始。
答:
3赞
JohnM
7/1/2023
#1
假设是你的 ListBox 并且是你的数组(已经VacuumLinesList
VacLine
Dimmed
)
With VacuumLinesList
Dim i As Long, j As Long
j = LBound(VacLine)
For i = 0 To .ListCount - 1
If .Selected(i) Then
VacLine(j) = .List(i)
j = j + 1
End If
Next i
' produce test output
For i = LBound(VacLine) To UBound(VacLine)
Debug.Print i, VacLine(i)
Next i
End With
... 是项索引,是数组索引i
ListBox
j
评论
0赞
Andres Cobos
7/1/2023
没错,VacuumLinesList 是我的 ListBox,VacLine 是我的数组已经变暗为 Dim VacLine(1 To 10) As String,但我输入了代码并且似乎不起作用。
0赞
JohnM
7/1/2023
你能澄清一下“没用”吗?是否存在错误或输出与您的预期不匹配?
1赞
JohnM
7/1/2023
那么你把代码放在哪里了?例如,如果 ListBox 位于用户窗体中,并且您有一个 CommandButton,当您在 ListBox 中选择相关项时单击该 CommandButton(并且可能关闭用户窗体),那么它可以进入该 CommandButton 的 Click 事件处理程序?
1赞
JohnM
7/1/2023
VacLine 需要是一个数组,例如......确保模块中托管了代码Dim VacLine(1 to 10) As Variant
Option Explicit
1赞
JohnM
7/1/2023
始终包括 ...它隐藏了错误,让你认为你的代码没问题,而事实并非如此!Option Explicit
上一个:检查批处理文件中的相对路径树
下一个:使用变量构建 curl URl
评论