2017-03-06 49 views
0

我更喜欢使用函数.value,因为我不会错过任何东西,但我不能粘贴或全部范围我不能在其他工作表中“拼凑”日期“放”! (复制和粘贴)

任何人都知道我能做些什么?

Sub AUTO() 


Application.ScreenUpdating = False 

'sheet that i want paste 
PasteData1 = ActiveSheet.Cells(3, 6).Value 
DATAAUTO = "L:\ANALISTA_M\Frade\FINANCIAL SERVICES\INSURANCE\Mercado\SUSEP\Planilhas\Auto-Susep.xlsx" 
Workbooks.Open (DATAAUTO) 
sName = ActiveSheet.Name 

'count the number of rows and columns 
i = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row - 11 
c = ActiveSheet.Cells(6, Columns.Count).End(xlToLeft).Column 

'select all range that i want 
COPYDATE = ActiveSheet.Range(Cells(6, 1), Cells(i, c)).Value 


PASTEAUTO = "L:\ANALISTA_M\Frade\FINANCIAL SERVICES\INSURANCE\Mercado\SUSEP\Auto.xlsm" 
Workbooks.Open (PASTEAUTO) 
Worksheets(PasteData1).Activate 

'the problem is here!!! i need to respect a order the beging my paste 
ActiveSheet.Cells(2, 2).Value = COPYDATE 

ActiveSheet.Range(Cells(2, 2), Cells(i - 4, c + 1)).Replace What:=".", Replacement:="" 
ActiveSheet.Range(Cells(2, 2), Cells(i - 4, c + 1)).Replace What:=",", Replacement:="." 

Worksheets("Consolidado").Activate 

Workbooks("Auto-Susep.xlsx").Close 

Application.ScreenUpdating = True 

End Sub 

回答

1

使用.Value在复制粘贴,你需要有相同的尺寸范围。你有一个单元格试图容纳一个2维数组。

因此改变:

ActiveSheet.Cells(2, 2).Value = COPYDATE 

到:

ActiveSheet.Cells(2, 2).Resize(UBound(COPYDATE,1),UBound(COPYDATE,2)).Value = COPYDATE 

此外,我不看,你声明你的任何变量,这是一个不好的习惯,人们总是应该即使申报变数它们是变体类型。

Dim COPYDATE() as Variant 
+0

感谢SCOOT 这是确定 – Vinicius

+0

一两件事,斯科特 我很好奇。我不明白为什么声明变量非常重要,因为即使我没有声明,代码也能正常工作 – Vinicius