Loops 运行时错误91

Loops 运行时错误91,loops,excel,vba,Loops,Excel,Vba,我在r=Bcell.Row行收到错误Runtime 91 error。如何修复错误 尝试定义一个范围以执行一些检查 Dim LastRow, SECTYPE, Bcell, r As Range LastRow = ActiveSheet.Range("D65536").End(xlUp).Row() Rows("1:1").Select Selection.AutoFilter ActiveSheet.Range("A1:L" & LastRow).AutoFilter Field

我在
r=Bcell.Row
行收到错误
Runtime 91 error
。如何修复错误

尝试定义一个范围以执行一些检查

Dim LastRow, SECTYPE, Bcell, r As Range

LastRow = ActiveSheet.Range("D65536").End(xlUp).Row()

Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("A1:L" & LastRow).AutoFilter Field:=10, Criteria1:="X"

If LastRow > 1 Then
    Set SECTYPE = ActiveSheet.Range("D2:D" & LastRow)
    For Each Bcell In SECTYPE
        r = Bcell.Row


        If Trim(Bcell.Value) = "CO" Or Trim(Bcell.Value) = "PO" Then
            If (Trim(Bcell.Offset(0, -1).Value) = "SWAPOPT") And UCase(Trim(ActiveSheet.Range("i" & r).Value)) = "X" Or UCase(Trim(ActiveSheet.Range("i" & r).Value)) = "" Then
                    ActiveSheet.Range("J" & r).Value = "-"
                    ActiveSheet.Range("J" & r).Interior.ColorIndex = xlNone
        End If

        ElseIf Trim(Bcell.Value) = "FU" Then
            If (Trim(Bcell.Offset(0, 1).Value) = 1 And InStr(Trim(Bcell.Offset(0, -2).Value), "IB") <> 0) Then
                ActiveSheet.Range("J" & r).Value = "-"
                ActiveSheet.Range("J" & r).Interior.ColorIndex = xlNone
           End If


        ElseIf Trim(Bcell.Value) = "OS" Then
            If (Trim(Bcell.Offset(0, 2).Value) <> "AUD") Then
                    ActiveSheet.Range("J" & r).Value = "-"
                    ActiveSheet.Range("J" & r).Interior.ColorIndex = xlNone
            End If

        End If
    Next Bcell
End If
Dim LastRow,secttype,Bcell,r As Range
LastRow=ActiveSheet.Range(“D65536”).End(xlUp).Row()
行(“1:1”)。选择
自动筛选
ActiveSheet.Range(“A1:L”和LastRow)。自动筛选字段:=10,标准1:=X
如果LastRow>1,则
Set secttype=ActiveSheet.Range(“D2:D”和LastRow)
对于扇区类型中的每个Bcell
r=b单元行
如果微调(b单元格值)=“CO”或微调(b单元格值)=“PO”,则
如果(Trim(Bcell.Offset(0,-1).Value)=“SWAPOPT”)和UCase(Trim(ActiveSheet.Range(“i”&r.Value))=“X”或UCase(Trim(ActiveSheet.Range(“i”&r.Value))=”则
ActiveSheet.Range(“J”和r).Value=“-”
ActiveSheet.Range(“J”&r).Interior.ColorIndex=xlNone
如果结束
ElseIf Trim(b单元格值)=“FU”然后
如果(微调(b单元格偏移量(0,1).Value)=1,而指令(微调(b单元格偏移量(0,-2).Value),“IB”)为0,则
ActiveSheet.Range(“J”和r).Value=“-”
ActiveSheet.Range(“J”&r).Interior.ColorIndex=xlNone
如果结束
ElseIf Trim(Bcell.Value)=“OS”然后
如果(微调(b单元格偏移(0,2).值)“AUD”),则
ActiveSheet.Range(“J”和r).Value=“-”
ActiveSheet.Range(“J”&r).Interior.ColorIndex=xlNone
如果结束
如果结束
下一个B单元
如果结束

您需要设置变量,如下所示:

Set r = Bcell.Row

认为这可能只是将错误从91(对象变量或未设置块变量)更改为424(需要对象)
Bcell。行
将返回一个
——不同于
Bcell.EntireRow
,后者将返回一个
范围
。看起来
r
只是用作行号的字符串表示形式,因此应该将其声明为
string
,然后肯定不需要
Set
。更好的方法是,只要一致地使用
Offset
,然后就根本不需要
r