|
Answer Excel 97以上 |
Copyright (C) 2000.3.22 Yoshioh Nagai |
|
|
この質問への回答としてはズバリではないですが、すでに類似例を掲載済みです。
そこで、そのページ(変数で範囲指定して選択するには?)から関係部分を転載しましたので、
まず、次を見てください。
|
マクロを自動記録すると、選択した範囲が "B3:E6" のような表現になりますね。他のケースでも同様で、例えば印刷枚数を 2枚と指定すると "2" と記録されます。 そこで、これらの指定を任意に変えたい場合に、変数をどう書けば良いのか知りたくなります。
この「すぐに役立つエクセルVBAマクロ集」の中のあちこちに、使用例が載っています。
例えば、印刷枚数の指定は、MACROの「印刷」のページの 1)伸縮する表の印刷 に
印刷枚数 = 1
ActiveWindow.SelectedSheets.PrintOut Copies:=印刷枚数
の例が見られます。
|
|
これを見習って、ご質問のマクロを書きかえると、次のようになります。
開始ページ = 1
終了ページ = 2
印刷部数 = 1
ActiveWindow.SelectedSheets.PrintOut From:=開始ページ, To:=終了ページ, Copies:=印刷部数
本題とは無関係ですが、質問のマクロの末尾に 「Collate:True」 と書かれていて 「=」 が抜けています。
「Collate:=True」 が正しいです。
質問送付時の入力ミスかと思いますが、モジュールシートに書かれているマクロコードがそうなっている場合は、
「どうも自分で試した限りではマクロを実行する事が出来ません」の原因になります。
「Collate」は PrintOutメソッドの引数で、部単位で印刷する場合に「True」を指定します。省略すると「部単位で印刷しない」になります。
余談になりますが、質問のマクロコードは印刷部数が「1」ですから「True」を指定しても無意味と思います。
例えば、印刷部数が「2」、開始ページが「1」、終了ページが「2」の場合に、「Collate:=True」 と指定すると、プリンタから
1ページ→2ページ→1ページ→2ページと丁合いされた状態で出てきます。
本題にもどります。
最終的な希望は、「例えば”x1”のセルから最終印刷ページ数を指定したい」でした。上記の見習って作ったマクロの変数「終了ページ」に
セルの値をセットするには、[値の出入]のページに セルの値を取り出す として掲載されて
いる次の書き方
年 = Cells(2, 1) 'A2セルの値を取り出す
を見習えばできます。
この Cellsプロパティを使う方法は、セル番号をR1C1参照方式で書くので、もし、わずらわしければ、
終了ページ = Range("x1").Value
のように書くことも可能です。ご成功を祈ります。
|