2015-10-23 50 views
0

我想了解如何基於單擊複選框將三行從一張複製到另一張。我使用從here代碼:將選定行復制並粘貼到不同工作表的複選框

Private Sub CheckBox1_Click() 
Dim SrcRange As Range, TrgRange As Range 

    Set SrcRange = Worksheets("Data Sheet").[B1] 
    Set TrgRange = Worksheets("Sheet1").[C1] 

    If CheckBox1 Then 
     TrgRange = SrcRange 
    Else 
     TrgRange = "" 
    End If 
End Sub 

這是我目前使用的這個過程的代碼:

Private Sub CheckBox1_Click() 
Dim SrcRange As Range, TrgRange As Range 

    Set SrcRange = Worksheets("Data Sheet").Range("A1:E1") 
    Set TrgRange = Worksheets("Sheet1").Range("A1:E1") 

    Set SrcRange = Worksheets("Data Sheet").Range("A2:E2") 
    Set TrgRange = Worksheets("Sheet1").Range("A2:E2") 

    Set SrcRange = Worksheets("Data Sheet").Range("A3:E3") 
    Set TrgRange = Worksheets("Sheet1").Range("A3:E3") 

    If CheckBox1 Then 
     TrgRange = SrcRange 
    Else 
     TrgRange = "" 
    End If 
End Sub 

使用此代碼時沒有提供錯誤,但沒有數據被複制並粘貼到選定的工作表中。

+0

感謝戴夫!真的很感激快速的迴應,並有一個愉快的週末。 – MGurz

+0

我假設戴夫的答案有效,這很好。我在結束時讓'CheckBox1'評估任何東西都有困難。我看了[鏈接](http://stackoverflow.com/questions/11741836/checking-if-a-worksheet-based-checkbox-is-checked),看到我可以使用'ActiveSheet.Shapes(「Check Box 1」 ).OLEFormat.Object.Value = 1'作爲解決方法。 – Demetri

+0

其實Dave,會有一種方法可以在同一個子框中選擇多個特定的行嗎? – MGurz

回答

0

使用下面的子

Sub CheckBox1_Click() 

    Dim SrcRange As Range 
    Dim TrgRange As Range 

    If CheckBox1 = 1 Then 
     Set SrcRange = Worksheets("Data Sheet").Range("A1:E3") 
     Set TrgRange = Worksheets("Sheet1").Range("A1:E3") 

     SrcRange.Copy 
     TrgRange.PasteSpecial _ 
     Paste:=xlPasteValues 

    End If 

End Sub 
0

我想你想使用:

If CheckBox1 Then 
    TrgRange = SrcRange.Value 
Else 
    TrgRange = "" 
End If 

但我不知道爲什麼你得到的這部分代碼之前,改變範圍三次,我敢肯定,這將拿出作爲另一個問題...

+0

我想選擇三個不同的行,並注意到,執行時,只提供最後一行 – MGurz

0

您的問題是,您分配給TrgRange變量另一個Range變量,但不是Range變量中的值。 SrcRange引用您選擇的範圍。 嘗試是這樣的複製值:

TrgRange.Copy 
SrcRange.Paste 
0

看起來你錯過了原來的解決方案的重要組成部分。

從本質上講,原來的解決方案是:

'TrgRange = SrcRange 
Worksheets("Sheet1").[C1] = Worksheets("Data Sheet").[B1] 

而你的情況將轉化爲:

'trailing .Value is required for Ranges 
Worksheets("Sheet1").Range("A1:E1") = Worksheets("Data Sheet").Range("A1:E1").Value 
Worksheets("Sheet1").Range("A2:E2") = Worksheets("Data Sheet").Range("A2:E2").Value 
Worksheets("Sheet1").Range("A3:E3") = Worksheets("Data Sheet").Range("A3:E3").Value 

這可以簡化爲只:

Worksheets("Sheet1").Range("A1:E3") = Worksheets("Data Sheet").Range("A1:E3").Value 
+0

感謝您的分解。真的有助於清理代碼。 – MGurz

相關問題