尝试从 Excel VBA 的表单复选框中的用户选择中打印多张工作表

恩格丹

所以我有一个名为“Print_Form”的表单,它有 20 个复选框,在表单初始化时,这些复选框采用我的工作簿前 20 个工作表的工作表名称。

( UserForm_Initialize() 子没有问题,这工作正常)

Private Sub UserForm_Initialize()
    CheckBox1.Caption = Sheets(1).Name
    CheckBox2.Caption = Sheets(2).Name
    CheckBox3.Caption = Sheets(3).Name
    CheckBox4.Caption = Sheets(4).Name
    CheckBox5.Caption = Sheets(5).Name
    CheckBox6.Caption = Sheets(6).Name
    CheckBox7.Caption = Sheets(7).Name
    CheckBox8.Caption = Sheets(8).Name
    CheckBox9.Caption = Sheets(9).Name
    CheckBox10.Caption = Sheets(10).Name
    CheckBox11.Caption = Sheets(11).Name
    CheckBox12.Caption = Sheets(12).Name
    CheckBox13.Caption = Sheets(13).Name
    CheckBox14.Caption = Sheets(14).Name
    CheckBox15.Caption = Sheets(15).Name
    CheckBox16.Caption = Sheets(16).Name
    CheckBox17.Caption = Sheets(17).Name
    CheckBox18.Caption = Sheets(18).Name
    CheckBox19.Caption = Sheets(19).Name
    CheckBox20.Caption = Sheets(20).Name
End Sub

当用户单击表单中的打印按钮时,我遇到的问题是在以下子例程中。此按钮背后的目的是打印用户选择的所有工作表(即用户选中了相应复选框的工作表)。目前,当我选择多个复选框然后单击打印按钮时,出现以下错误;“运行时错误‘9’:下标超出范围。

Private Sub cmdPrint_Click()

    Dim i As Integer
    Dim cb As MSForms.Control
    Dim SheetArray() As String
        
    i = 0
    'Search form for a checkbox
    For Each cb In Me.Controls
    i = i + 1
    ReDim Preserve SheetArray(i)
        'If the control is a checkbox
        If TypeName(cb) = "CheckBox" Then
        'and the checkbox is checked
            If cb.Value = True Then
            'Add the sheet to the sheet array (sheet name string was already added to the checkbox property caption; see UserForm_initialize)
            SheetArray(i) = cb.Caption
            End If
        End If
    Next cb
    'Print Sheet Array
    Sheets(SheetArray()).PrintOut
    
    Unload Me
End Sub

如果有人有任何想法可以帮助我实现这一目标,我将不胜感激。先感谢您。:)

蒂姆·威廉姆斯

尝试这个:

Private Sub UserForm_Initialize()
    Dim i As Long
    For i = 1 To 20 'less typing....
        Me.Controls("CheckBox" & i).Caption = Sheets(i).Name
    Next i
End Sub

Private Sub cmdPrint_Click()
    Dim i As Integer, s As String, sep
    For i = 1 To 20
        With Me.Controls("CheckBox" & i)
            If .Value Then
                s = s & sep & .Caption
                sep = "," 'add delimiter after first item
            End If
        End With
    Next i
    Sheets(Split(s, ",")).PrintOut
    Unload Me
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

选择多个复选框后在Excel VBA中打印字符串

Excel 2016 VBA代码复选框,用于在用户窗体1的选择中输入是或否

VBA + Excel +尝试赶上

VBA excel用户表单复选框问题

Excel VBA +用户表单复选框::使用表单复选框隐藏/取消隐藏列

动态检查与工作表同名的复选框-VBA Excel

尝试将Range从工作表复制到新工作簿中。Excel VBA

VBA在Excel中的新增功能。尝试求和增量函数

尝试通过 VBA 和 OLEDB 在 excel 中创建表格

如何从 VBA Access 中勾选 Excel 复选框

Excel VBA用户窗体使用复选框将数据输入到多行中

Word / Excel VBA:获取表中Word复选框的值和位置

使用VBA在Excel中选择复选框

使用 vba excel 选中打开工作表复选框

尝试搜索月/年列表(excel vba)

尝试使用excel vba从html显示图像

将工作表数据插入到用户表单组合框中,没有重复 - Excel Vba

Excel中的VBA可以控制Word文档中的内容控制复选框

VBA-Excel 2016中单元格中多个值的复选框

尝试在 Excel VBA 中运行 MS Access 查询时出现“需要对象”错误

尝试使用vba在excel中显示单元格的旧值和新值

Excel VBA尝试在值列表中查找最小值的地址

尝试使用Selenium + Excel VBA从Chrome浏览器中的网站上抓取代码

在Excel VBA中,尝试将输入的月份数字转换为完整日期

尝试解锁某些单元格时,如何修复 vba excel 中的错误 1004?

VBA / Excel宏-尝试使用从一个工作表绘制并在多个工作表中填充的数组简化代码

尝试从 Excel VBA 登录网页,但用户名和密码显示为灰色

我正在尝试使用Excel Vba从IE的下拉kendolistbox中选择项目

Excel中从右到左的用户表单-VBA