2016-12-20 29 views
0

を失敗し、このサブが呼び出されると、取引先の値が84であるとiCustomerがある場合、私はちょうど思っていた1044770.貼り付け方法は

で次のExcel VBAコードに

Private Sub Copy_Formula(Dest As Integer, iCustomer As Long) 
    Sheets("INPUT").Select 
    Cells(2, Dest).Select 
    Selection.Copy 
    Range(Cells(4, Dest), Cells(3 + iCustomer, Dest)).Select 
    ActiveSheet.Paste '<------ Errors out 
    Application.CutCopyMode = False 
    Calculate 
    Range(Cells(4, Dest), Cells(3 + iCustomer, Dest)).Select 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    Application.CutCopyMode = False 
End Sub 

をご検討くださいこのペースト操作を解決するソリューション?この大量のデータを格納するためにどこかでバッファサイズを増やすことは可能ですか? 64ビットOSを搭載した32 GB RAMマシンで32ビットのExcel 2010を使用しています。

64ビットExcelは動作しますか?

+0

私は、あなたのコードがクラッシュしていると言い、それがうまくいったとします。私はちょうどコピーされているセルに '= A2'という数式を持っていました。 (Excel 2013 32ビット16Gb RAM) – YowE3K

+0

膨大な量のデータが原因で失敗する可能性はありますか?このシートをインポートしたテキストファイルは560 MBです。それが事実なら、別のやり方でお願いしますか? –

+0

あなたは 'Range(Cells(4、Dest)、Cells(3 + iCustomer、Dest))を試すことができます。FormulaR1C1 = Cells(2、Dest).FormulaR1C1' - **メモリ上ではストレスが少ないかもしれませんが、わからない。 – YowE3K

答えて

1

ActiveSheetの代わりに完全修飾名を使用することを常にお勧めします。

このコードのためにその全て同じ、この

Private Sub Copy_Formula(Dest As Integer, iCustomer As Long) 
    Sheets("INPUT").Cells(2, Dest).Copy Sheets("INPUT").Range(Cells(4, Dest), Cells(3 + iCustomer, Dest)) 
    Application.CutCopyMode = False 
    Calculate 

    Sheets("INPUT").Range(Cells(4, Dest), Cells(3 + iCustomer, Dest)).Copy 

    Sheets("INPUT").Range(Cells(4, Dest), Cells(3 + iCustomer, Dest)).Cells(1, 1).PasteSpecial _ 
          Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    Application.CutCopyMode = False 
End Sub 

、32または64ビットを試してみてください。

+0

こんにちは、変更されたコードを送信していただきありがとうございます。残念ながら、RangeクラスのCopyメソッドの表示に失敗しました。他の提案は –

+0

のhmmは私のために働く。何が起こっているかわからない。このたくさんのコードを新しいrokbbokに入れ、シートの名前をINPUTと名前を変更してテストします。 – cyboashu

+1

'Worksheet'オブジェクトを取得するときに' Worksheets'コレクションを使用する方が良いです;-) ...そして 'Sheets'は暗黙的にアクティブなワークブックを参照しているので、ちょうど*半修飾*; 0) –