如何在VBA Excel 2010中选中复选框后复制特定数据?
问题描述:
数据:我有3列和1复选框。我只能在第一列添加数据。如何在VBA Excel 2010中选中复选框后复制特定数据?
什么我想要做的是,当我选中该复选框,将数据拷贝到第二&第三列,当它没有被选中的数据是从第二& 3去除。
我做什么是我要记录一个宏:
- 选择源列
- 然后我复制它的范围。
- 选择两列的范围并粘贴值。
- 停止录制宏
- 现在右键单击复选框并将该宏指定给复选框。
宏的代码是我面对
Sub Macro1()
Range("B4:B8").Select
Selection.Copy
Range("D4:D8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F4:F8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
的问题是,将数据拷贝到第2和第3列,但选择栏仍然闪烁的第一列,其次是我当取消选中复选框时,不能取消分配数据。像这样:
我试图记录相反的情况下的另一个宏,但我不能分配2个宏相同的复选框&如何取消分配当复选框中的数据未核对。
答
我收集这是一个ActiveX控件复选框,您使用开发人员►控件►插入►ActiveX控件►复选框插入。
随着设计模式打开,用鼠标右键单击CheckBox控件,然后从内容菜单查看代码。
这应该在一个空CheckBox1_Click
私有子打开您的VBE。名称(CheckBox1)可能会根据您的实际控件命名而有所不同。将以下修改粘贴到该空白子文件中。
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
Range("D4:D8") = Range("B4:B8").Value
Range("F4:F8") = Range("B4:B8").Value
Else
Range("D4:D8,F4:F8").ClearContents
End If
End Sub
点击Alt键 + Q返回到您的工作表。关闭设计模式(开发人员►控制►设计模式),使控制开始运行。
点击复选框开启和关闭会交替填充D4:D8和F4:F8或清除它们。
@ jeeped.Thanks男子。 – 2015-04-03 07:01:56
@AbdulWahab - 别担心。很高兴,让你整理出来。感谢您花时间将代码发布到问题中,而不是将其留在图像中。 – Jeeped 2015-04-03 07:04:49