excel,取消选中后复选框撤消操作

时间:2016-03-16 01:54:40

标签: excel excel-vba vba

如果项目地址与通信地址相同,我有一个复选框,可将地址的5个单元格复制到下面的5个单元格中。 这是我的代码:

Sub copy_address()
'
' copy_address Macro
'
    Range("D5:G5").Select
    Selection.Copy
    Range("D11:G11").Select
    ActiveSheet.Paste
    Range("D6:G6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("D12:G12").Select
    ActiveSheet.Paste
    Range("D7:G7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("D13:G13").Select
    ActiveSheet.Paste
    Range("D8:G8").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("D14:G14").Select
    ActiveSheet.Paste
    Range("F9:G9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("F15:G15").Select
    ActiveSheet.Paste

    SendKeys "{ESC}"

    ActiveSheet.Range("D17").Select

End Sub

但它不做的是在取消选择时撤消复制和粘贴。事实上,它执行复制和粘贴操作的天气,勾选或取消勾选框。

2 个答案:

答案 0 :(得分:0)

您的代码中没有提及任何复选框或其当前状态(也称为.Value)。通常,在工作表上放置ActiveX复选框后,您将使用设计模式并右键单击它以获取查看代码命令。

在VBE中的工作表代码表上,将点击后处理程序修改为类似的内容。

Private Sub CheckBox1_Click()
    If CheckBox1.Value Then
        Range("D5:G8").Copy Destination:=Range("D11")
        Range("F9:G9").Copy Destination:=Range("F15")
    Else
        Range("D11:G14").ClearContents
        Range("F15:G15").ClearContents
    End If
End Sub

答案 1 :(得分:0)

如果你想保留已经分配的copy_address子,你可以尝试这个。

Sub copy_address()
'
' copy_address Macro
If ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = 1 Then
    ActiveSheet.Range("D5:G8").Copy Destination:=ActiveSheet.Range("D11:G14")
    ActiveSheet.Range("F9:G9").Copy Destination:=ActiveSheet.Range("F15:G15")
Else
    ActiveSheet.Range("D11:G15").ClearContents
End If
End Sub