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

数据:我有3列和1checkbox。 我只能在第一列添加数据。

我想要做的是,当我selectcheckbox,数据复制到第二和第三列,并且当它被取消选中数据从第二和第三删除。

我正在做的是我正在录制一个macros:

  1. select源列的范围
  2. 然后我复制它。
  3. select两列的范围并粘贴值。
  4. 停止录制macros
  5. 现在右键单击checkbox并将该macros分配给checkbox。

macros的代码是

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 

我面临的问题是,数据复制到第二和第三列,但select栏保持闪烁的第一列,其次是我不能取消分配数据时checkbox未检查。 喜欢这个:

填充的列

我试图logging另一个macros的相反的情况下,但我不能分配2个macros到同一个checkbox,以及如何取消分配数据时checkbox未勾选。

我收集这是一个ActiveX控件checkbox,您使用开发人员►控件►插入►ActiveX控件►checkbox插入。

ActiveX复选框

打开devise模式后,右键单击checkbox控件,然后从内容菜单中select查看代码

ActiveX复选框Meuu

这应该打开你的VBE在一个空的CheckBox1_Click私人小组。 名称(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返回到您的工作表。 closuresdevise模式(开发人员►控制►devise模式),使控制开始运行。

点击checkbox开启或closures将交替填充D4:D8和F4:F8或清除它们。