2015-04-03 61 views
1

數據:我有3列和1複選框。我只能在第一列添加數據。如何在VBA Excel 2010中選中複選框後複製特定數據?

什麼我想要做的是,當我選中該複選框,將數據拷貝到第二&第三列,當它沒有被選中的數據是從第二& 3去除。

我做什麼是我要記錄一個宏:

  1. 選擇源列
  2. 然後我複製它的範圍。
  3. 選擇兩列的範圍並粘貼值。
  4. 停止錄製宏
  5. 現在右鍵單擊複選框並將該宏指定給複選框。

宏的代碼是我面對

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 

的問題是,將數據拷貝到第2和第3列,但選擇欄仍然閃爍的第一列,其次是我當取消選中複選框時,不能取消分配數據。像這樣:

我試圖記錄相反的情況下的另一個宏,但我不能分配2個宏相同的複選框&如何取消分配當複選框中的數據未覈對。

回答

0

我收集這是一個ActiveX控件複選框,您使用開發人員►控件►插入►ActiveX控件►複選框插入。

ActiveX Check Box

隨着設計模式打開,用鼠標右鍵單擊CheckBox控件,然後從內容菜單查看代碼

ActiveX Check Box Meuu

這應該在一個空CheckBox1_Click私有子打開您的VBE。名稱(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返回到您的工作表。關閉設計模式(開發人員►控制►設計模式),使控制開始運行。

點擊複選框開啓和關閉會交替填充D4:D8和F4:F8或清除它們。

+0

@ jeeped.Thanks男子。 – 2015-04-03 07:01:56

+0

@AbdulWahab - 別擔心。很高興,讓你整理出來。感謝您花時間將代碼發佈到問題中,而不是將其留在圖像中。 – Jeeped 2015-04-03 07:04:49