マクロの迷い人です。
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ランキング
-
Excelの関数について教えてくだ...
-
エクセルファイルがファイルの...
-
一つのセルに(例えばA1)入力...
-
エクセル vbaについて教えてく...
-
Excel 複数列 A列B列C列一致 D...
-
【マクロ】名前を保存する際に...
-
Excelについて教えてください
-
エクセル マクロ チェックボックス
-
エクセルであるセルに数字を入...
-
【Excel】数字を3倍にし、なお...
-
エクセル共有したが、アクセス...
-
【マクロ】顧客番号にて一致さ...
-
Excel分析ツールでのポアソン回...
-
エクセルで年休を管理する方法...
-
エクセルのデーターが2か月前の...
-
LOOKUP関数を使えばいいのでし...
-
エクセル②
-
エクセルを使っていて2024/5/15...
-
Excelでセルの値が同じか...
-
エクセルでの作業計算方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報