Arrays 循环遍历数组数值
代码在第一个if语句处中断。工作表范围错误。正在尝试通过myarray循环。myarray是一个整数数组。谢谢Arrays 循环遍历数组数值,arrays,vba,loops,Arrays,Vba,Loops,代码在第一个if语句处中断。工作表范围错误。正在尝试通过myarray循环。myarray是一个整数数组。谢谢 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i As Long, myarray As Variant myarray = Array(122, 123) For i = LBound(myarray) To UBound(myarray) If Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, myarray As Variant
myarray = Array(122, 123)
For i = LBound(myarray) To UBound(myarray)
If Range("O" & i) <> 0 Then
answer = MsgBox("Price Change. Are you sure?", vbYesNo)
End If
If answer = vbNo Then
Range("F" & i).Formula = "=IFERROR(VLOOKUP($B" & i & ",eac_equipment_list!$P:$S,2,FALSE),"""")"
End If
If answer = vbYes Then
Range("O" & i) = "0"
End If
Next i
End Sub
Private子工作表\u selection更改(ByVal目标作为范围)
Dim i为长,myarray为变体
myarray=Array(122123)
对于i=LBound(myarray)到UBound(myarray)
如果范围(“O”&i)为0,则
回答=MsgBox(“价格变化,你确定吗?”,vbYesNo)
如果结束
如果答案=vbNo,则
Range(“F”和i).Formula=“=IFERROR(VLOOKUP($B“&i&”,eac\u设备列表!$P:$S,2,FALSE),“”)
如果结束
如果答案=是,则
范围(“O”和“i)=“0”
如果结束
接下来我
端接头
以下是一些需要考虑的事项:
SelectionChange
仅涉及一个单元格,因为您的代码未设置为处理多个单元格李>
IF
语句。这已从3个IF
语句减少到2个(其中使用ElseIf
)i
只显示数组的索引。如果需要索引的值,则需要使用myarray(i)
选项Explicit
添加到代码顶部。需要声明变量answer
选项显式
专用子工作表\u选择更改(ByVal目标作为范围)
Dim i为长,myarray为变量,应答为变量
如果Target.Count>1,则退出Sub
myarray=Array(122123)
对于i=LBound(myarray)到UBound(myarray)
如果范围(“O”和myarray(i))为0,则
回答=MsgBox(“价格变化,你确定吗?”,vbYesNo)
如果答案=vbNo,则
范围(“F”和myarray(i))。公式=“=IFERROR(VLOOKUP($B”)和myarray(i)和”,eac_设备列表!$P:$S,2,FALSE),“”)
ElseIf answer=vbYes然后
范围(“O”和myarray(i))=0
如果结束
如果结束
接下来我
端接头
LBound(myArray)
为0。所以Range(“O”&i)
变成Range(“O”&0)
,这不是一个有效的地址。Range(“O”&myarray(i))
urdearboy,谢谢你的评论!它起作用了!
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, myarray As Variant, answer As Variant
If Target.Count > 1 Then Exit Sub
myarray = Array(122, 123)
For i = LBound(myarray) To UBound(myarray)
If Range("O" & myarray(i)) <> 0 Then
answer = MsgBox("Price Change. Are you sure?", vbYesNo)
If answer = vbNo Then
Range("F" & myarray(i)).Formula = "=IFERROR(VLOOKUP($B" & myarray(i) & ",eac_equipment_list!$P:$S,2,FALSE),"""")"
ElseIf answer = vbYes Then
Range("O" & myarray(i)) = 0
End If
End If
Next i
End Sub