
マクロの迷い人です。
Excelの表をマクロで印刷しようと思っています。
行の数が毎回違うため、最終セルもその都度指定しなければなりません。
A1 B1
A2 B2
A3 B3
A4 B4
この例で、A5 B5 以降は空セルとします。
印刷範囲を Range("A1:B4")と書かずに、そのときどきのアクティブセルを変数に代入し、変数を使って範囲指定したいのです。
Sub MacroTest ()
Dim a As Variant
Dim b As Variant
Range("B1").Activate
Do While a <> 0
ActiveCell.Offset(1, 0).Activate '空白でなければ一つ下に移る
a = ActiveCell.Value
Loop
ActiveCell.Offset(-1, 0).Activate '上の行に移る
b = ActiveCell.Value
Range("A1:"& b).Select
End Sub
こうしてみましたがダメでした。
デバッグの方法がわからないので教えて下さい。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
>Do While a <> 0
>ActiveCell.Offset(1, 0).Activate '空白でなければ一つ下に移る
>a = ActiveCell.Value
>Loop
ではなくて、
Do
ActiveCell.Offset(1, 0).Activate
a = ActiveCell.Value
Loop While Not IsEmpty(a)
a は、Variant ですから、値のないものは、Empty 値になります。
このように書いてもよいのですが、
a <> Empty
厳密には、これは、Empty 値ではなく、0を含みます。
>b = ActiveCell.Value
ではなくて、
b = ActiveCell.Address
だろうと思います。
私も、別のマクロでは、このように書いてきましたが、そういうワークシートをなめる方法しかなかったからです。
こういうアイデアは、今後十分に期待出来ても、今の自力のマクロは、使えるようになるまでは、苦労が多く時間も掛かります。そのままですと、普通に使えるレベルまでには到達できません。この前の私が披露したように、マクロも定石があって、その定石で書いたほうが楽なのです。
たとえば、地続きの場合は、ただ、CurrentRegion だけでよいので、それを、PrintArea に代入します。
ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range("A1").CurrentRegion.Address
これも、マクロ入門2週間目ぐらいかな。
Wendy02さん
教えていただいたように直して巧くいきました。
> CurrentRegion.Address
また知識が増えました。
ありがとうございました。
No.5
- 回答日時:
>マクロで印刷しようと思っています
したいのは、下記のどれですか。
一部は、ご質問には鼻から対象外も含めてますが。
(質問の例は印刷には的を得ていないと思う)
(1)activesheet全体を印刷
Sub test01()
ActiveSheet.PrintOut
End Sub
(2)印刷範囲(Range)を指定する
(A)プログラム内で固定
(B)Range("A2").CurrentRegion.PrintOut
(C)手動ではあるが、操作者が範囲指定して、
その後VBAが自動印刷指令
Sub test02()
Dim r As Range
Set r = Application.InputBox("印刷範囲=", Type:=8)
r.PrintOut
End Sub
(D)アクチブセルで範囲右下隅セル指定
Sub test03()
r = ActiveCell.Row
c = ActiveCell.Column
Range(Cells(2, "A"), Cells(r, c)).PrintOut
End Sub
(E)事実上データのある最下行をVBAで探して
そこまでの行を印刷
Sub test04()
d = Range("C65536").End(xlUp).Row
Range("A2:D" & d).PrintOut
End Sub
(F)事前手動範囲指定(範囲指定して印刷ボタンをクリックなど)
Sub test05()
Selection.PrintOut
End Sub
-----
これ以外があれば教えて下し。
imogasiさん ありがとうございました。
質問が下手でした。
印刷はエリアを区分して何枚かに分けて行います。
A1 B1 C1
A2 B2 C2
---
A3 B3 C3
A4 B4 C4
たとえば、上のように2枚に分けるとき、1枚目のRange("A1:C2")のC2、2枚目のRange("A3:C4")のA3を変数にするにはどう表すかということを知りたかったのです。
データには空セルもありますが、開始セルと終末セルを決める列(この場合 A と C )には空行はありません。
最終目的は二つありまして、
1.途中でキー入力なしに、エリアを区分して何枚かに分けて印刷するマクロを作りたい。
2.Range("R:C")のR:Cの一方、または両方に変数を入れる形は他にも使えそうなので、その記述方法を知りたい。
ということでした。
No.4
- 回答日時:
#3です。
参考ページの例では、列がAB列固定ですね。
列方向にも自動で範囲拡張したければ以下のようにしてください。
(A列のデータの数、1行目のデータの数で印刷範囲を指定します)
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1))
マクロの質問なので関係ないかもしれませんが・・・
その場合は無視してくださいね。
No.3
- 回答日時:
マクロではありませんが、
こんな方法もあるようです。
以下のURLをご参照ください。
参考までに紹介いたします。
参考URL:http://www2.odn.ne.jp/excel/waza/print.html#SEC11
ka_na_deさん たびたびありがとうございます。
「エクセル技道場」は、逆引きマニュアル式で便利、不精者の私にはピッタリです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/09 14:54
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセル
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
【マクロ】A列にある、日付(本...
-
【マクロ】3行に上から下に並...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】WEBシステムから保存...
-
iPhoneのExcelアプリで、別のシ...
-
【エクセル】期限アラートについて
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
Excelについての質問です 並べ...
-
マクロ・VBAで、当該ファイルの...
-
VBA チェックボックスをオーバ...
-
派遣会社とかハローワークとか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報