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