复选框将选定的行复制并粘贴到不同的工作表中

时间:2015-10-23 12:41:23

标签: excel vba checkbox

我试图找出如何在单击复选框的情况下将三个行从一个工作表复制到另一个工作表。我使用的是来自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

使用此代码时,不会提供任何错误,但不会将任何数据复制并粘贴到所选工作表中。

4 个答案:

答案 0 :(得分:0)

我想你想用:

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

但是我不确定你为什么要在这部分代码之前改变范围三次,我相信这会成为另一个问题......

答案 1 :(得分:0)

你的问题是你为TrgRange变量分配了另一个Range变量,而不是Range变量中的值。 SrcRange参考您选择的范围。 尝试这样的东西来复制值:

TrgRange.Copy
SrcRange.Paste

答案 2 :(得分:0)

使用以下子

IsHitTestVisible = true

答案 3 :(得分: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