在VBA Excel 2010中如何checkbox后复制特定数据?
数据:我有3列和1checkbox。 我只能在第一列添加数据。
我想要做的是,当我selectcheckbox,数据复制到第二和第三列,并且当它被取消选中数据从第二和第三删除。
我正在做的是我正在录制一个macros:
- select源列的范围
- 然后我复制它。
- select两列的范围并粘贴值。
- 停止录制macros
- 现在右键单击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插入。
打开devise模式后,右键单击checkbox控件,然后从内容菜单中select查看代码 。
这应该打开你的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或清除它们。