私は技術的な質問があります:私は別のブックに複数のワークシート(ない一定の範囲)から複数の範囲をエクスポートする必要があるので、私はExcel vbaバリアント配列を再利用可能、消去する必要がありますか?
Dim arrTemp as Variant
Dim wbSource as workbook
Dim wbTarget as workbook
を作成 :
私の問題を。私のコードは次のようになります。
' Worksheet 1
arrTemp = wbSource(1).Range("A1:B2").value
wbTarget(1).Range("A1:B2").value = arrTemp
If Not(IsArrayEmpty(arrTemp)) Then Erase arrTemp
' Worksheet 2
arrTemp = wbSource(2).Range("A1:B2").value
wbTarget(2).Range("A1:B2").value = arrTemp
If Not(IsArrayEmpty(arrTemp)) Then Erase arrTemp
' Worksheet 3
arrTemp = wbSource(3).Range("A1:B2").value
wbTarget(3).Range("A1:B2").value = arrTemp
If Not(IsArrayEmpty(arrTemp)) Then Erase arrTemp
が(ワークシートに含めることができる(ワークシートが空ARRハンドラが理由です、最初の場所で空にすることができます)、INT/STR /ダブル/ ...とサイズはそれほど大きくはありません特定のarrタイプを定義してください)
私の質問は: いつもアレイを消去するのは意味がありますか?または自動的に上書きされますか?
新しい範囲で配列を定義する前と後で配列のプロパティ(Lbound & UBound)をチェックするテストを行いました。私はそれが自動的に配列をRedimすることがわかります。それは私が手順の終わりにそれをクリアするだけでいいということですか?
または、間にクリアすることをお勧めしますか?
最後に、私のコードに問題はありませんか?このタスクを実行するためのより良い方法は?
事前に感謝します。
編集: コードはこのタスクでは正しくありません。アレイに転送する必要はありません。要するに
正直言って、ある範囲の値を別の値に割り当てるのではなく、変数を使用することに何のメリットもありません。ただし、アレイを消去する必要はありません。 – Rory
おかしい。私は何年間もVBAをフルタイムでプログラミングしていましたが、このEraseコマンドがあったことさえ知りませんでした。 @Rory。 –
私はこの方法を "Power Programming 2013"からarray-transfer-methodでコピーして範囲を広げました(うんざりだが、私は何十万行も使っていない)。あなたのアドバイスは範囲から範囲に簡単に送信することになりますか? – Charlie