Vba 激活工作表1,否则将激活另一张工作表

Vba 激活工作表1,否则将激活另一张工作表,vba,excel,Vba,Excel,嗨,我试图通过添加if语句来修改以下两行代码,但没有成功。有人知道为什么吗 Workbooks(wkbk_Record).Activate Workbooks(wkbk_Record).Sheets("Tab1").Select 下面的问题是什么?多谢各位 If SheetExists("Tab1", Workbooks(wkbk_Record)) Then Workbooks(wkbk_Record).Activate Workbooks(wkbk_Record).S

嗨,我试图通过添加if语句来修改以下两行代码,但没有成功。有人知道为什么吗

Workbooks(wkbk_Record).Activate
Workbooks(wkbk_Record).Sheets("Tab1").Select
下面的问题是什么?多谢各位

If SheetExists("Tab1", Workbooks(wkbk_Record)) Then    
    Workbooks(wkbk_Record).Activate
    Workbooks(wkbk_Record).Sheets("Tab1").Select    
Else    
    Workbooks(wkbk_Record).Activate
    Workbooks(wkbk_Record).Sheets("Tab2").Select

考虑到您从这里获取
表单存在
,这是一个有效的方法:

Sub TestMe()

    If SheetExists("Tab1") Then
        Sheets("Tab1").Select
    ElseIf SheetExists("Tab2") Then
        Sheets("Tab2").Select
    Else
        MsgBox "No Sheet"
    End If

End Sub

 Function SheetExists(shtName As String, Optional wb As Workbook) As Boolean

     Dim sht As Worksheet

     If wb Is Nothing Then Set wb = ThisWorkbook
     On Error Resume Next
     Set sht = wb.Sheets(shtName)
     On Error GoTo 0
     SheetExists = Not sht Is Nothing

 End Function
或者,如果你想看到你的同事发疯,就这样写:

Sub ActivateTab2OrTab1()

    On Error Resume Next
    Sheets("Tab2").Select
    Sheets("Tab1").Select

End Sub

您是否有
SheetExists
的代码?如果
正确,则不能
结束?是的,“如果SheetExists(“Tab1”,工作簿(wkbk_记录))”在.OP之前被使用了大约20行-这是一个很好的机会来学习如何设置工作表变量,而不是
选择
。谢谢你的评论。所以我可以在另一个已经存在的“Sub”下使用“Sub”?谢谢@BurtBee,是的,如果你已经用
End Sub
结束了之前的
Sub
例程(哦,好吧,这是嵌入在一个很长的Sub中的,所以我可能无法单独使用它来处理另一个Sub),或者你能解释一下为什么我的代码不起作用吗?我以为我只是稍微修改了一下。谢谢