2016-05-06 6 views
0

新しいVBAユーザーここ...保存されたワークシート変数からワークシートを作成する方法

メモリに格納された変数からワークシートを作成する方法がわかりません。私がしようとしているのは、開いているブックから既存の「テンプレート」シートを複数作成し、メモリ内でそれらを操作して(例えば、範囲値の変更、数式の追加など)、実際のシートとして開いているブック。

メモリにコピーを作成してアレイに保存することはできますが、実際のワークシートをブックに作成することはできません。助けてください:)

Dim wb As Workbook 
Dim ws As Worksheet 
Dim wsTemplate As Worksheet 
Dim wsCopies(1 To 5) As Worksheet 
Dim x As Long 

Set wb = ThisWorkbook 
Set ws = wb.Sheets("Worksheet Test") 
Set wsCopy = ws 


For x = 1 To 5 
    Set wsCopies(x) = wsTemplate 
'used this line to make sure this actually copied into memory 
    Debug.Print wsCopies(x).Range("A1").FormulaR1C1 
Next x 

ありがとうございます!

+0

'Set wsCopies(x)= wsTemplate'あなたは' wstemplate'を初期化していませんか? – findwindow

+0

findwindowを申し訳ありません、私は実際には初期化しましたが、この質問のためのコードを一般的なものにしてすぐに行いました。返信してくれてありがとう。私はこれを行う方法がないと信じるのは難しいと思う。それはクラスモジュールが代わりに扱うことができるものなのだろうか?ワークシート変数を操作してそれを吐き出すことができない場合、ワークシート変数をメモリに保持するのは何ですか? –

答えて

0

メモリにのみ存在する「ワークシートをメモリに」実際にはありません。新しいワークシートを作成し、そこにブックがあります。ちょっとした手間をかけずにワークシートを複製する素晴らしい方法はありません。何かのように:

For x = 1 To 5 
    wsTemplate.copy after:=wsTemplate 
    Set wsCopies(x) = wb.Sheets(wsTemplate.index + 1) 
'used this line to make sure this actually copied into memory 
    Debug.Print wsCopies(x).Range("A1").FormulaR1C1 
Next x 

これはひどくはありませんが、それはあなたが考えていたものではありません。 application.screenupdating = falseに入っていない場合は、wsCopies(x).visiblexlSheetHiddenに設定し、もう一度表示に切り替えるまでさらに操作してください。

+0

ありがとうJNevill。ワークブックに貼り付けた後にシートの順序を管理しようとするのではなく、私の方がはるかにクリーンであると思ったので、私はそれを避けようとしていました。私はそれが唯一の方法かもしれないと思う。 –

+0

私はworkheets.addメソッドがあなたが思っているものに近づくだろうと信じていますが、あなたはコピーを持っていません...これはおそらくあなたが必要とするものを取り除くための最良の方法です。 – JNevill

関連する問題