マクロの迷い人です。
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ランキング
-
ある表にフィルターをかけて出...
-
Lookup関数
-
セルの数を求めたい
-
Excelを無料で使うには? パソ...
-
IFとIFS関数
-
エクセルの数式バーのフォント...
-
EXCELの散布図で日付が1900年に...
-
エクセル日付 文字列の関数がエ...
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
エクセルで「ページレイアウト...
-
【ExcelVBA】名前を付けて保存→...
-
Excelピボットテーブルの1行目
-
エクセルの問題です。絶対値の...
-
Excelの表示についての質問
-
Excel関数について教えてくださ...
-
エクセルのツールバーから数値...
-
Excelで表を作ったところに文字...
-
DATE関数で現在の年齢を出した...
-
Excelデータをコピペして、ペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報