2016-03-16 3 views
0

У меня есть флажок, который копирует 5 ячеек адреса на 5 ячеек ниже, если адрес проекта совпадает с адресом корреспонденции. вот код у меня есть:excel, сделайте операцию отмены флажка после отмены

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 

Но что он не делает это отменить копирование и вставка, когда выбраны. Фактически, он выполняет операцию копирования и вставки в поле, отмеченном галочкой или без отметки.

+0

Можете ли вы изменить свой вопрос, включив код, который вызывает эту процедуру, пожалуйста. – Ambie

+0

Я думаю, что этот флажок назначен для экземпляра copy_address. поэтому он запускается, когда он проверяет или отменяет флажок. – mongoose36

ответ

0

В вашем коде отсутствует ни один флажок или его текущее состояние (ака. Value). Как правило, после установки на рабочем листе флажка ActiveX вы должны использовать режим разработки и щелкнуть его правой кнопкой мыши для команды View Code.

Как только на листе рабочего листа в 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 
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 
+0

Большое спасибо Ребята, это прекрасно работает. Очень признателен. –

Смежные вопросы