我试图检查动态数组中是否有任何值" i"一个大于零,其中" i"是用户输入。如果为false,则数组中第一个元素的值将显示在下一列中。如果为true,则数组的值通过向下移动一个元素来更新。我相信我已经在java here中找到了这个问题的答案,但是在vba中找不到任何运气。我相信这可以通过完成here的for循环来完成,但是如果它存在则希望更高效。由于我不知道任何可能有效的语法代码挂起在"如果有任何x> 0然后"
Dim i, z, u As Integer
Dim fir As Integer
Dim las As Integer
Dim n As Long
Dim x As Variant
'SET VALUE OF ROWS FOR ARRAY
i = Worksheets("INPUTS").Range("C6").Value
Set s = Worksheets("DATA")
'FIND LAST VALUE IN DATA
n = s.Cells(s.Rows.Count, "A").End(xlUp).Row
'BEGIN LOOP THROUGH DATA SET
For z = 1 To n
'SET/RESET RANGE TO CHECK FOR CONSECUTIVE VALUES LESS THAN ZERO
fir = z
las = i + z - 1
x = (s.Range("C" & fir, "C" & las).Value)
u = s.Range("C" & UBound(x)).Value
If any x > 0 Then
Else: s.Cells(4, z) = x(1, 1).Value
End If
Next z
我是初学者,也是论坛的新手,所以请随时根据与代码或问题相关的最佳做法撕下新的内容,谢谢。
答案 0 :(得分:0)
为了加快处理速度,您可以考虑将Excel Range
(例如A1:A100
)转换为数组Arr
,然后迭代数组:
Dim Arr() As Variant
Arr = Range("A1:A100")
此外,您可以考虑在开始迭代之前设置属性Application.ScreenUpdating = False
(如果您根据示例在迭代期间更改单元格值,并在之后将其重置为True
。< / p>
希望这可能会有所帮助。
答案 1 :(得分:0)
使用工作表功能
If Application.WorksheetFunction.Max(Range("a1:a100")) > 0 Then
MsgBox "value higher than zero"
end if