如何在VBA Excel 2010中选中复选框后复制特定数据?

问题描述:

数据:我有3列和1复选框。我只能在第一列添加数据。如何在VBA Excel 2010中选中复选框后复制特定数据?

什么我想要做的是,当我选中该复选框,将数据拷贝到第二&第三列,当它没有被选中的数据是从第二& 3去除。

我做什么是我要记录一个宏:

  1. 选择源列
  2. 然后我复制它的范围。
  3. 选择两列的范围并粘贴值。
  4. 停止录制宏
  5. 现在右键单击复选框并将该宏指定给复选框。

宏的代码是我面对

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控件►复选框插入。

ActiveX Check Box

随着设计模式打开,用鼠标右键单击CheckBox控件,然后从内容菜单查看代码

ActiveX Check Box Meuu

这应该在一个空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或清除它们。

+0

@ jeeped.Thanks男子。 – 2015-04-03 07:01:56

+0

@AbdulWahab - 别担心。很高兴,让你整理出来。感谢您花时间将代码发布到问题中,而不是将其留在图像中。 – Jeeped 2015-04-03 07:04:49