我有一个复选框,如果项目地址与通信地址相同,它会将地址的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
但它不做的是撤消复制并在取消选择时粘贴。事实上,它执行复制和粘贴操作,无论框是勾选还是未勾选。
发布于 2016-03-16 02:19:17
在您的代码中没有提到任何复选框或其当前状态(也称为.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
发布于 2016-03-16 02:43:16
或者,如果您想保留已分配的copy_address sub,也可以尝试此操作。
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
https://stackoverflow.com/questions/36025502
复制