2014-02-08 3 views
1

У меня есть рабочая тетрадь с x рабочими листами. И кнопка (commandbutton1) в Sheet1, которая открывает пользовательскую форму с двумя флажками и кнопкой предварительного просмотра, чтобы выбрать между двумя листами для предварительного просмотра в формате 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 

Теперь проблема в том, что Лист1 всегда включен в файл предварительного просмотра, так как это лист, содержащий CommandButton1.

Так есть способ снять выделение листа1 перед экспортом листов 6 & 21 ??

Я также попробовал другой путь, но он всегда застрял на этой линии (Sheets (Array (SheetNames)). Выбрать)

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 

Любая помощь с любой из них, пожалуйста ??

Благодарим u заранее.

ответ

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 

Перед:

enter image description here

После того, как:

enter image description here

ИЛИ

enter image description here

+0

Это именно то, что я искал .. Поблагодарите u soooo much .. Я очень ценю ur help – user3286479

Смежные вопросы