2017-03-06 3 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を使用する場合、同じサイズの範囲を持つ必要があります。 1つのセルが2次元配列を保持しようとしています。

ので変更:

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

た:

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

また、私はあなたがあなたの変数のいずれかを宣言するところ、それは悪い癖です表示されていない、1が常にあっても、その変数を宣言する必要がありますバリアント型です。

Dim COPYDATE() as Variant 
+0

おかげでそれは私が興味があった、スコット OK – Vinicius

+0

もう一つある をスクート。私は、変数が宣言することがとても重要である理由を理解できませんでした。なぜなら、コードは宣言しなかった – Vinicius

関連する問題