@sHARek

Печать заданных страниц VBA (checkbox). Как?

Добрый день.
Сильно не обижайте умными словами.
Хочу сделать печать определенных страниц, в зависимости от отмеченных checkbox
Отметил 3 чекбокса, нажал печать...
На первой странице joxi.ru/RmzqZ3JH09O0Nr

Набросал код бомжа, понятно что он страшный/кривой/нерабочий и т.д. (я первый день в этом)

Dim strPage As String
Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
    'Application.PrintOut Pages:="1,2"
        strPage = "2"
    ElseIf CheckBox1.Value = False Then
        strPage = ""
    End If
End Sub
Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then
    'Application.PrintOut Pages:="1,2"
        strPage = "3"
    ElseIf CheckBox2.Value = False Then
        strPage = ""
    End If
End Sub
Private Sub CommandButton1_Click()
    'MsgBox strPage
    Application.PrintOut Pages:=strPage
End Sub


Что должно передаваться (строка, число) и как правильно передать в Application.PrintOut Pages:="" номера страниц (склеенную переменную strPage, т.е при двух отмеченных чекбоксах, должно быть что то типо 23. Конкатенацию надо как то сделать, потом встроенной функцией разделить на 2,3. Мозгов не хватает) ?
  • Вопрос задан
  • 462 просмотра
Решения вопроса 1
@sHARek Автор вопроса
Dim strPages As String
Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        strPages = strPages & "2"
    End If
End Sub
Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then
        strPages = strPages & "3"
    End If
End Sub
Private Sub CommandButton1_Click()
    Application.PrintOut Range:=wdPrintRangeOfPages, Pages:=strPages
    'MsgBox strPages
End Sub

Требуется параметр Range:=wdPrintRangeOfPages
И так сойдет :D
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lvv85
В параметре Pages указываются номера листов в виде "2, 3" (для печати листов 2 и 3).
Sub PrintSelectedPages()
    Dim strPages As String

    strPages = strPages & IIf(CheckBox1.Value, IIf(strPages = "", "", ",") & "2", "")
    strPages = strPages & IIf(CheckBox2.Value, IIf(strPages = "", "", ",") & "3", "")
    
    If Not strPages = "" Then Application.PrintOut Range:=wdPrintRangeOfPages, Pages:=strPages
    
End Sub
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы