Excel VBA用户窗体,复选框用于打印工作表和另存为新工作簿

时间:2015-06-08 12:50:40

标签: excel vba excel-vba userform

我需要一些帮助,我正在尝试创建一个基于工作表名称创建复选框的UserFrom。然后它将有4个按钮,1:打印,2:保存新工作簿,4:清除选择,5:取消。

这是我创建checboes的代码,并将标题更改为工作表名称。

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim i As Integer

    For i = 1 To Worksheets.Count
    Set ws = Worksheets(i)
    Set Lbl = Frame1.Controls.Add("Forms.Checkbox.1", "Lbl1" & i, True)
    Lbl.Caption = ws.Name
    Lbl.Top = offset
    offset = offset + 15
    Next i
End Sub

这是清除选择的代码。

    Private Sub CommandButton2_Click()
Dim ctrl As Control

For Each ctrl In UserForm1.Controls
    If TypeName(ctrl) = "CheckBox" Then
        ctrl.Value = False
    End If
Next
End Sub

我需要按钮1和按钮1的帮助2,打印纸张并另存为新工作簿。打印时,需要使用与正常打印相同的打印格式。

新创建的工作簿需要使用下面的命名约定

进行保存
NewWorkbook.SaveAs Filename:=MyPath & "\" & "Remittance" & " " & MyRange.Value & " " & MyDate.Text & ".xls" 'This saves a new document in our naming convention

非常感谢您提供的任何帮助。

修改

我设法编写了一些代码,允许我选择复选框,然后选择要打印的工作表。此代码有效,除非文本框中没有输入任何值,我想在没有输入值的情况下显示一个消息框,然后返回到表单输入值,但不确定如何编写验证代码。

Private Sub bntPrintNow_Click()
Dim ctrl As Control
Dim chkbx As MSForms.checkbox
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
Me.Hide

For Each ctrl In Me.Controls
    If TypeOf ctrl Is MSForms.checkbox Then
        Set chkbx = ctrl
            If chkbx Then
            Worksheets(chkbx.Caption).PrintOut Copies:=Me.tbNumCopies + 0
            End If
    End If
Next
End Sub

下一个圣人将选定的工作表保存到新工作簿。

0 个答案:

没有答案