Excel 我试图使这段代码工作,但失败,因为结束与

Excel 我试图使这段代码工作,但失败,因为结束与,excel,vba,Excel,Vba,我得到了 结束 错误,我找不到问题 我试图在第一组.visible=true下面添加else,但没有成功。任何帮助都将不胜感激 Sub Owners() Sheets("Start").Activate Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name <> ThisWorkbook.ActiveSheet.Name Then w

我得到了

结束

错误,我找不到问题

我试图在第一组
.visible=true
下面添加
else
,但没有成功。任何帮助都将不胜感激

Sub Owners()

    Sheets("Start").Activate
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
            ws.Visible = xlSheetHidden
        End If
    Next ws

    With Worksheets("Start")
        Dim stateMatch As Variant
        stateMatch = Application.Match(.Range("B2").Value, Sheets("List").Range("K2:K32"), 0)

        Dim numOwnerMatch As Variant
        numOwnerMatch = Application.Match(.Range("B3").Value, Sheets("List").Range("D2:D3"), 0)

        If IsNumeric(stateMatch) And IsNumeric(numOwnerMatch) Then
            If numOwnerMatch = 1 Then
                Worksheets("1st OwnerStatement").Visible = True
                Worksheets("1st OwnerPPW").Visible = True
            End If
            If numOwnerMatch = 2 Then
                Worksheets("1st OwnerStatement").Visible = True
                Worksheets("2nd OwnerStatement").Visible = True
                Worksheets("1st OwnerPPW").Visible = True
                Worksheets("2nd OwnerPPW").Visible = True
            End If
        End With

End Sub
Sub-owner()
工作表(“开始”)。激活
将ws设置为工作表
对于此工作簿中的每个ws。工作表
如果ws.Name ThisWorkbook.ActiveSheet.Name,则
ws.Visible=xlSheetHidden
如果结束
下一个ws
带工作表(“开始”)
Dim stateMatch作为变量
stateMatch=Application.Match(.Range(“B2”).值,表(“List”).范围(“K2:K32”),0)
Dim numOwnerMatch作为变体
numOwnerMatch=Application.Match(.Range(“B3”).值,表(“List”).范围(“D2:D3”),0)
如果是数值型(stateMatch)和数值型(numOwnerMatch),则
如果numOwnerMatch=1,则
工作表(“第一所有者声明”)。可见=真实
工作表(“第一所有者”)。可见=真实
如果结束
如果numOwnerMatch=2,则
工作表(“第一所有者声明”)。可见=真实
工作表(“第二所有者声明”)。可见=真实
工作表(“第一所有者”)。可见=真实
工作表(“第二所有者”)。可见=真实
如果结束
以
端接头

试试这个。如果靠近底部,看起来好像你错过了一个端点。间隔分组可能有助于您进一步了解这一点,因为更容易看到IF/with/etc何时打开和关闭

Sub Owners()
    Dim ws As Worksheet
    Dim stateMatch As Variant
    Dim numOwnerMatch As Variant

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
            ws.Visible = xlSheetHidden
        End If
    Next ws

    With Worksheets("Start")
        stateMatch = Application.Match(.Range("B2").Value, Sheets("List").Range("K2:K32"), 0)
        numOwnerMatch = Application.Match(.Range("B3").Value, Sheets("List").Range("D2:D3"), 0)
        If IsNumeric(stateMatch) And IsNumeric(numOwnerMatch) Then
            If numOwnerMatch = 1 Then
                Worksheets("1st OwnerStatement").Visible = True
                Worksheets("1st OwnerPPW").Visible = True
            End If
            If numOwnerMatch = 2 Then
                Worksheets("1st OwnerStatement").Visible = True
                Worksheets("2nd OwnerStatement").Visible = True
                Worksheets("1st OwnerPPW").Visible = True
                Worksheets("2nd OwnerPPW").Visible = True
            End If
        End If
    End With
End Sub
Sub-owner()
将ws设置为工作表
Dim stateMatch作为变量
Dim numOwnerMatch作为变体
对于此工作簿中的每个ws。工作表
如果ws.Name ThisWorkbook.ActiveSheet.Name,则
ws.Visible=xlSheetHidden
如果结束
下一个ws
带工作表(“开始”)
stateMatch=Application.Match(.Range(“B2”).值,表(“List”).范围(“K2:K32”),0)
numOwnerMatch=Application.Match(.Range(“B3”).值,表(“List”).范围(“D2:D3”),0)
如果是数值型(stateMatch)和数值型(numOwnerMatch),则
如果numOwnerMatch=1,则
工作表(“第一所有者声明”)。可见=真实
工作表(“第一所有者”)。可见=真实
如果结束
如果numOwnerMatch=2,则
工作表(“第一所有者声明”)。可见=真实
工作表(“第二所有者声明”)。可见=真实
工作表(“第一所有者”)。可见=真实
工作表(“第二所有者”)。可见=真实
如果结束
如果结束
以
端接头

问题只是不一致,很难判断哪些块从何处开始和结束。嵌套结构应该看起来是嵌套的。给那个标签键它应得的爱!;-)