エクセルVBAについての質問です。

あるアクティブセルを基点に、範囲指定をしてを印刷しようとしていますが、範囲指定の部分でエラーがでてしまいます。式は次のとおりです。
ActiveSheet.PageSetup.PrintArea = "Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(20, 4))"
オフセットを使わずに固定した箇所を範囲指定する場合には、セルが「$」で絶対参照とされますが、オフセットを使う場合がいろいろと試したのですがよくわかりません。どなたか教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/08/22 15:51:42
  • 終了:2009/08/29 15:55:02

回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/08/22 16:07:41

ポイント27pt

http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop...(office.11).aspx

印刷するセル範囲を、コード記述時の言語の A1 形式の文字列で設定します。

上記のような仕様なので Address にて A1形式に変換したものを PrintArea に入れるようにします。

ActiveSheet.PageSetup.PrintArea = Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(20, 4)).Address
id:ken3memo No.2

ken3memo回答回数244ベストアンサー獲得回数762009/08/22 16:08:54

ポイント27pt

ActiveSheet.PageSetup.PrintArea = "$D$10:$H$17"

とか、印刷範囲をXXX:XXXと文字列でできそうなので、

Dim strADDRESS As String 'と変数を1つ作ってから、

strADDRESS = ActiveCell.Offset(0, 0).Address & ":" & ActiveCell.Offset(20, 4).Address

'↑.Addressでアドレス:アドレスを作って↓代入

ActiveSheet.PageSetup.PrintArea = strADDRESS


こんな感じで、どうでしょうか?

1行で、

ActiveSheet.PageSetup.PrintArea = ActiveCell.Offset(0, 0).Address & ":" & ActiveCell.Offset(20, 4).Address

でも、いけると思います。

ハズしていたらスミマセン。 http://www.moug.net/tech/exvba/0050094.htm

id:HALSPECIAL No.3

HALSPECIAL回答回数407ベストアンサー獲得回数862009/08/22 17:09:59

ポイント26pt

ActiveSheet.PageSetup.PrintArea = Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(20, 4)).Address


とします。

なお、

ActiveCell.Offset(0, 0)

は、

ActiveCell

と同じです。

ActiveSheet.PageSetup.PrintArea = Range(ActiveCell, ActiveCell.Offset(20, 4)).Address

でも良いです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません