自从我在Excel VBA中使用数组以来已经有一段时间了,所以请原谅我......
我试图定义一个基于动态数组的连续匹配单元格,这些单元格是在循环中确定的。我确定我的语法对于定义数组是错误的我只是不确定如何。困难在于我的数组包含1列中的大约6个连续行,以及不同列中的另一个单元格。有什么想法吗?
Sub calib_range()
Dim instrument As Variant
Dim calibrator As Variant
Dim lastrow As Integer
lastrow = ThisWorkbook.ActiveSheet.Range("b2").SpecialCells(xlCellTypeLastCell).Row
For i = 4 To lastrow
If Cells(i, 4) Like "MPC*" Then
'enter loop to determine length of MPC* array
For x = i + 1 To lastrow
If Cells(x, 4) = Cells(x - 1, 4) Then
Else
x = x - 1
Exit For
End If
Next x
instrument = Array(Cells(i, 17), Range(Cells(i, 14), Cells(x, 14)))
calibrator = Array(0, Range(Cells(i, 12), Cells(x, 12)))
Slope = Application.WorksheetFunction.Slope(instrument, calibrator)
Intercept = Application.WorksheetFunction.Intercept(instrument, calibrator)
Cells(i, 22) = Slope
Cells(i, 23) = Intercept
End If
Next i
End Sub
答案 0 :(得分:1)
你的问题在这里:
calibrator = Array(0, Range(Cells(i, 12), Cells(x, 12)))
您不被允许这样做,因为VBA认为在您的数组中您获得0和范围。因此,您的数组包含两种不同类型的valuse。这不是你需要的。
稍微阅读here关于如何初始化数组的内容,这是很好的解释。
编辑: 同样在上一行中,您只需创建一系列范围。什么会对你有用可能是这样的:
Public Sub CheckArray()
Dim my_array() As Double
ReDim my_array(6)
my_array(0) = Cells(1, 17)
my_array(1) = Cells(2, 17)
my_array(2) = Cells(3, 17)
my_array(3) = Cells(4, 17)
my_array(4) = Cells(5, 17)
my_array(5) = Cells(6, 17)
my_array(6) = Cells(7, 17)
End Sub