プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。いつもお世話になっています。

エクセルで、データーベースを作成しました。
これから日を増すごとに、データ行がどんどん増えていきます。

アクティブにしたセルから、列右へ9行、行下へ15行の範囲を印刷させたいのです。

Dim r As Integer
r = ActiveCell.Column
Dim d As Integer
d = ActiveCell.Row
Dim h As Integer
h = Cells(r.g).Offset(15, 9)
ActiveSheet.Range("rd:h").PrintOut , preview:=True

このように書いてみたのですが、動きません。
すみませんが、どうしたら良いか教えて下さい。
よろしくお願いします。

A 回答 (4件)

1,2番の回答がいずれもOkだと思います。



技術の話なんですが、質問者のコードが間違っています。

>ActiveSheet.Range("rd:h").PrintOut , preview:=True
r,d,hいずれも変数ですので、上記の書き方はだめ。
ActiveSheet.Range(r+d+":"+h).PrintOut , preview:=True

こうみたい書き方は大丈夫はずだ。
    • good
    • 0

既に回答は出ていますが・・・


どこでマクロがこけて、それがなぜなのか少しは考えましたか?
Range Cells についてヘルプは見ましたか?
番地指定についてr1c1形式は知っていますか?
これらを考えた上で、皆さんが提示してくれるコードをみれば理解が向上すると思います。


※提示されたコードでは g が何者か不明です。

提示されたコードを元に範囲指定だけ示します。
Dim r As Integer
Dim d As Integer
r = ActiveCell.Column
d = ActiveCell.Row
Range(cells(d,r),cells(d+15,r+9)).Select
    • good
    • 0

マクロの自動記録を利用すれば簡単にできるはずですが…



>選択しているセルから印刷範囲を設定する方法
 ActiveSheet.PageSetup.PrintArea = ctiveCell.Resize(15, 9).Address

選択範囲を印刷するなら、わざわざ印刷範囲を設定しなくても
 ActiveCell.Resize(15, 9).PrintOut copies:=1
でいけるのでは?
    • good
    • 0
この回答へのお礼

ありがとうございます!できました

お礼日時:2009/05/22 12:42

次のような内容ではいかがでしょう。



Sub Test()
 Selection.Resize(16, 10).Select
 Selection.PrintPreview 'PrintOut
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます!できました

お礼日時:2009/05/22 12:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!