在工作表2中,我想要一个宏来运行表值,主要是在F列(最大入口浓度)和B列(操作)中,如下图Worksheet 1所示。基本上,它将找到对应于列F的0值的参考操作。
它将运行F列,当找到0值时,它将返回匹配操作。这样做直到表的末尾。如果我有1A - 0,2B - 0和4C - 0,它将始终选择宏找到0值的第一个操作。在图片中,宏必须返回值1,即第一个操作。
所以我编写了以下代码并给出了运行时错误'91':对象变量或With块变量未设置。
Dim sh1 As Worksheet
Dim StartCellCin As Range
Dim StartCellO As Range
Dim startRow As String
Dim multiplication As Integer
Dim countRows As Integer
Dim lastRow As Long
Dim operation As Long
Set StartCellCin = sh1.Range("F13")
Set StartCellO = sh1.Range("B13")
startRow = StartCellCin.Row
multiplication = sh1.Range("D4").Value2 * sh1.Range("D6").Value2
countRows = multiplication - 1
lastRow = startRow + countRows
Do While startRow < lastRow
If StartCellCin.Value = 0 Then
operation = Application.WorksheetFunction.Index(sh1.Range("B13"), Application.WorksheetFunction.Match(0, sh1.Range("startRow:lastRow"),0),1)
startRow = startRow + 1
Else
startRow = startRow + 1
If StartCellCin.Offset(startRow).Value = 0 Then
operation = Application.WorksheetFunction.Index(sh1.Range("B13").Offset(startRow), Application.WorksheetFunction.Match(0,sh1.Range("startRow:lastRow"),0),1)
startRow = startRow + 1
End If
End If
Loop
当我使用Option Explicit运行时,它不会返回任何语法错误。有人可以帮帮我吗?
谢谢!
答案 0 :(得分:0)
如果我没错,你只需要再多一行。您必须在使用WorkSheet对象之前设置工作表。 (虽然你不需要这么简单的循环所有这些对象)但是,要回答你的问题,请看这里的第一行:
Set sh1 = Sheets("Your Sheet's Name")
Set StartCellCin = sh1.Range("F13")
Set StartCellO = sh1.Range("B13")
'...