我试图使范围值“粘贴”而不使用复制/粘贴功能。我对VBA相当陌生,不明白为什么我的代码不起作用。对不起,如果这是一种已经回答的问题,但我无法通过其他帖子找出问题。动态范围内的VBA范围值
我能选择我想我的价值观中复制并粘贴过与
name_task = [code].select
name_task_2 = [code].select
的范围,但我不能写值与
name_task_2 = name_task.value
这工作name_task_2,对于我来说,我写了一些相同的东西,但是因为它不起作用,所以它显然不一样:D
sht2.Range("C2:D12") = sht1.Range("A8:B18").value
Sub Time_Estimate()
Application.ScreenUpdating = False
Dim name_task As Variant
Dim name_task_2 As Variant
Dim R_count As Double
Dim C_count As Double
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Set sht1 = Sheet1 'Sheets("Tekla_2016")
name_task = sht1.Range("A8:B8", sht1.Range("A8").End(xlDown))
R_count = sht1.Range("A8:B8", sht1.Range("A8").End(xlDown)).Rows.Count
'Debug.Print name_task.Rows.Count
'Debug.Print name_task.Columns.Count
Debug.Print R_count
Set sht2 = Sheet2 'Sheets("Timeforbruk_2016 - UFERDIG")
name_task_2 = sht2.Range("C2:D2", sht2.Range("C2:D2").Offset(R_count - 1, 0))
'name_task_2 = name_task.value 'Why doesn't this work???
'sht2.Range("C2:D12") = sht1.Range("A8:B18").value 'This works but it's not dynamic
Application.ScreenUpdating = True
End Sub
编辑: 此代码现在的工作,因为我想:
Sub Time_Estimate()
Application.ScreenUpdating = False
Dim name_task As Range
Dim name_task_2 As Range
Dim rng_sht1 As Range
Dim rng_sht2 As Range
Dim R_count As Double
Dim C_count As Double
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Set sht1 = Sheet1 'Sheets("Tekla_2016")
Set sht2 = Sheet2 'Sheets("Timeforbruk_2016 - UFERDIG")
Set name_task = sht1.Range("A8:B8", sht1.Range("A8").End(xlDown))
R_count = sht1.Range("A8:B8", sht1.Range("A8").End(xlDown)).Rows.Count
Set name_task_2 = sht2.Range("C2:D2", sht2.Range("C2:D2").Offset(R_count - 1, 0))
name_task_2 = name_task.value
Application.ScreenUpdating = True
End Sub
那究竟是什么不起作用?您发布的子版本或仅仅是第一行代码?错误信息也很重要。 – arcadeprecinct
'name_task = [code] .select'不工作,但'name_task = [code]'应该可以工作,如果'[code]'返回一个范围对象。就像你的另一个例子:'sht2.Range(“C2:D12”)= sht1.Range(“A8:B18”).value' works,but'sht2.Range(“C2:D12”)。Select = sht1 .Range(“A8:B18”)。value不起作用 - 它没有任何意义。 – vacip
如果你正在计算类似行的东西,你不需要'Double'。最好使用整数类型。在VBA中,最好使用'Long'(4个字节),因为'Integer'只有2个字节,因此它的上限为32767 – arcadeprecinct