【发布时间】:2014-06-21 23:36:43
【问题描述】:
我的工作簿有 sheet1 = Overview(包含启动 UserForm1 的按钮)。我的用户窗体有 24 个 CheckBox 和 2 个 CommandButton(确定和取消)。
每个 CheckBox 都与工作簿中的一个工作表相关联。随后的每个工作表都标记为 PQC 1001、PQC 1002 等,其中包含数据(每张工作表的 A1 中的图像被推到左上角)。
我的目标是让用户检查他们想要使用的每个项目的复选框,然后选择“确定”(CommandButton1)让它将数据复制到一个新的工作簿中以便他们打印出来。
稍后,我打算定义打印参数以对项目进行分页,但我需要先了解基础知识。
目前我有以下代码(使用第一个和第二个 CheckBox 以确保它们工作,然后我打算通过复制代码并修改正确的工作表/CheckBox 来扩展):
Sub CommandButton1_Click()
Dim WB As Workbook
If CheckBox1.Value = True Then
sheets("PQC 1001").Copy
Set NewBook = Workbooks.Add
With NewBook
End With
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Else: CheckBox1.Value = False
End If
If CheckBox2.Value = True Then
sheets("PQC 1002").Copy
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Else: CheckBox2.Value = False
End If
End Sub
Sub CommandButton2_Click()
Unload Me
End
End Sub
运行此代码时触发错误(仅检查了 CheckBox1):范围类的 PasteSpecial 方法失败。除了代码问题,我还生成了 2 个工作簿;第一个只有 PQC 1001 表,第二个工作簿是空白的(除非我复制了其他任何内容,例如,当我在修改之前复制/粘贴代码时,我复制的代码粘贴到第二个工作簿的单元格 A1 中)。
老实说,我不知道从这里去哪里。我花了一些时间在 Google 上搜索可能的解决方案,并尝试在 Stack Overflow 的搜索栏中寻找一些术语/短语。我想我可能正在查找不正确的术语名称,因此可能会有所不同(“粘贴到新书的命令按钮”就是其中之一)。
作为一般说明,这基本上是我尝试编写的第三件事;我的教育背景包含零编码。我的编码技能范围来自对我编写的代码的一些阅读和反馈,这些代码来自比我知识渊博的人。
【问题讨论】:
-
我认为问题在于您对
Selection的依赖。改为尝试明确说明目标范围,例如NewBook.Sheets(1).Range("A1").PasteSpecial...。 -
谢谢你,大卫;纠正了方法范围的问题(我在 PasteSpecial 之后删除了所有“东西”以使其工作)。不过,仍然打开了 2 个工作簿。
-
呃,我以为解决了;我的剪贴板上有一些东西要粘贴到第二个工作簿中,这似乎是“pasteSpecial”错误。
-
好的。我知道是什么原因造成的。让我给你写一个答案。
标签: excel vba checkbox paste commandbutton