我有一个excel VBA宏,该宏将用于计算加工零件的尺寸。宏的第一部分设置为从工作表中获取值,并根据一些预定义的选项计算面积并将其打印为excel。第二部分是我遇到的问题。
我已将表转换为2D数组(节省处理时间),并开始通过2个循环填充数组,其中1个控制行,1个控制列。在循环中,我试图找到最小的零值和关联的列,这将有助于工作的宏的最后一部分。我还将最小值设置为一个较大的值,永远不会超过该值。
当我逐步运行宏时,遇到的第一个无零值会将最小值重置为零,并且不更改列号。谁能指导我哪里出了问题?
maxtubesel = Sheets("Tube OD").Cells(Rows.Count, "R").End(xlUp).Row - 4
'Find min and col value in array
Dim resarray() As Long
ReDim resarray(maxtubesel, 5)
min = 1000000
col = 0
For m = 0 To 2 ' maxtubesel
For n = 0 To 4
resarray(m, n) = Sheets("Tube OD").Cells(4 + m, 26 + n)
If Sheets("Tube OD").Cells(4 + m, 26 + n) <> "" Or Sheets("Tube OD").Cells(4 + m, 26 + n) <> 0 Then
min = Sheets("Tube OD").Cells(4 + m, 26 + n) And col = n
End If
Next n
Next m
答案 0 :(得分:1)
此行
min = Sheets("Tube OD").Cells(4 + m, 26 + n) And col = n
应该是两行
min = Sheets("Tube OD").Cells(4 + m, 26 + n)
col = n
否则实际发生的是将min
设置为一个布尔值,该值检查这两个语句是否都为真:
Sheets("Tube OD").Cells(4 + m, 26 + n)
col = n
似乎不是,所以min = False
的值为零:)