【问题标题】:Unselect or Deselect Worksheet取消选择或取消选择工作表
【发布时间】:2014-02-08 06:39:11
【问题描述】:

我有一个包含 x 个工作表的工作簿。 Sheet1 中的一个按钮 (commandbutton1) 打开一个带有两个复选框和一个预览按钮的用户表单,用于在 2 个工作表之间进行选择以在 PDF 中预览。

这是我的预览按钮代码。

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim CheckBoxName As String

    For i = 1 To 2
        CheckBoxName = "CheckBox" & i
        If Me.Controls(CheckBoxName).Value = True Then
            Sheets(Me.Controls(CheckBoxName).Caption).Select (False)
        End If
    Next i

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:="D:\Preview.pdf"

    Unload Me

    Dim File As String
    File = "D:\Preview.pdf"
    ShellExecute 0, "Open", File, "", "", vbNormalNoFocus
End Sub

现在,问题是 Sheet1 总是包含在预览文件中,因为它是包含 commandbutton1 的工作表。

那么有没有办法在导出工作表 6 和 21 之前取消选择工作表 1??

我也尝试了另一种方法,但它总是卡在这一行 (Sheets(Array(SheetNames)).Select)

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim CheckBoxName As String
    Dim SheetNames As String

    For i = 1 To 2
        CheckBoxName = "CheckBox" & i
        If Me.Controls(CheckBoxName).Value = True Then
            SheetNames = SheetNames & Me.Controls(CheckBoxName).Caption & ","
        End If
    Next i

    SheetNames = Mid(SheetNames, 1, Len(SheetNames) - 1)

    Sheets(Array(SheetNames)).Select

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:="D:\Preview.pdf"

    Unload Me

    Dim File As String
    File = "D:\Preview.pdf"

    ShellExecute 0, "Open", File, "", "", vbNormalNoFocus
End Sub

请对这些有任何帮助吗??

提前谢谢你。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    诀窍在于你如何传递参数False

    Sheets(Me.Controls(CheckBoxName).Caption).Select (False)
    

    这是你正在尝试的吗?

    Private Sub CommandButton1_Click()
        Dim i As Integer, j As Integer
    
        For i = 1 To 6
            CheckBoxName = "CheckBox" & i
            If Me.Controls(CheckBoxName).Value = True Then
                j = j + 1
                Worksheets(Me.Controls(CheckBoxName).Caption).Select (j = 1)
            End If
        Next
        If j = 0 Then Exit Sub
    
        '
        '~~> Rest of your code
        '
    End Sub
    

    之前:

    之后:

    【讨论】:

    • 这正是我想要的 .. 非常感谢 .. 非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2017-03-17
    • 2013-11-11
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2011-08-23
    相关资源
    最近更新 更多