
Excelでデータベース的な使い方をしています。
「データ」シートにたくさんのデータがあり,
「レポート」シートのA1セルに入力した数字に該当するデータをVLOOKUP関数で読み込んでいます。
それを連続印刷するときに,
現在は
For n = 1 To 135
Range("A1").Select
ActiveCell.FormulaR1C1 = n
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next n
End Sub
というマクロで実行させています。
(ちなみにマクロの知識がほとんどなく
「新しいマクロの記録」を利用して作ったため,ほとんど意味は分かっていませんが・・・)
このマクロでも印刷できるのですが,
このままだとデータが 1 ~ 135に固定されてしまいますよね。
実際はデータ数が変動するので,そのたびにマクロの数字を変えています。
そこで考えているのが
新たに「設定」シートを作成して
そこのiとjのセルに数字を入力することで,自動的に
マクロが n = (iに入力した数字) To (jに入力した数字)
となるようにした方が便利だと考えています。
あまりマクロについての知識がないくせに
ほんのちょっとの工夫でできるような気がして・・・
あれこれ試してみたけどできません。
できれば今のマクロを根本的に変えるのではなくて
少しの変更とか追加とかでできるようにしたいのですが可能でしょうか?
ぜひ 教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>そこのiとjのセルに数字を入力することで,自動的に
>マクロが n = (iに入力した数字) To (jに入力した数字)
セルが、I1とJ1セルのことだとして
For n = 1 To 135
は
For n= Sheets("設定").Range("I1").Value To Sheets("設定").Range("J1").Value
といった風に記述できます。
>実際はデータ数が変動する
J1セルにはCOUNTA関数などを使用してデータの数を表示させておくと便利かもしれませんね。
思っていた通りのことができました。
ありがとうございます。
ホントにちょっとしたことだったんですね。
サクサク実行してくれるのが
とっても楽しいです。
役に立ちました。
No.3
- 回答日時:
データの情況が説明されて無いので、したいことが不明確。
>レポート」シートのA1セルに入力した数字に該当するデータをVLOOKUP関数で読み込んでいます、も良くわからない。
この質問には書く必要が無いのでは。
>Excelでデータベース的な使い方をしています
と大きく書いているが、エクセルはVBAが出来ないと、仕事には十分使えないと思う。VBAを勉強のこと。
この質問には書く必要なし。
ーー
質問内容だが、
(1)最終行まで一度に印刷
(2)指定した行から行まで印刷
(3)シートに、意味的に別の表が「複数あり、それらのデータ塊(表)をページを分けてシートの全表分一度に印刷する。
など考えたが、
そのどれか、またはこれら以外か、良くわからない。
(1)は
Sub test02()
d = Range("A65536").End(xlUp).Row
Range("A1:J" & d).PrintOut 'A-J列まで印刷の例"
End Sub
(2)は
Sub test03()
x = InputBox("開始行")
y = InputBox("終了行")
Range("A" & x & ":J" & y).PrintOut 'A-J列まで印刷の例"
End Sub
(3)は、例えば
(簡単な例で実行し納得し、その後確認のMsgbox行は削除して実行してください)
同一シートで、表と表が縦方向に並んでいて、その間には1行以上の空白行がある前提。
A列からデータが始まっている例。
表の実例がわからないので、下記ではうまく行かない例も想像できるがとりあえず挙げておく。
Sub test01()
d = Range("A65536").End(xlUp).Row
'MsgBox d
MsgBox "始めの行" & 1
Range("A1").CurrentRegion.Select
MsgBox Selection.Address
Selection.PrintOut
x = Range("A1").End(xlDown).Row
MsgBox "終了行" & x
'----
p1:
x = Range("A" & x + 1).End(xlDown).Row '始めの行
MsgBox "始めの行" & x
Range("A" & x).CurrentRegion.Select
MsgBox Selection.Address
Selection.PrintOut
If Range("A" & x).CurrentRegion.Rows.Count <> 1 Then
x = Range("A" & x).End(xlDown).Row
End If
MsgBox "終了行" & x
'--
If x = d Then GoTo p2 '終了
GoTo p1 '繰り返し
p2:
End Sub
すみません。
こちらがシロウトなので
分かりにくい説明になってしまいました。
VBAは勉強しなくては!!と思っていますが
何から手を付けたらいいのかも分からない状況です。
書店で本を探して見ていますが
自分のレベル(超初心者)にあったのが見つかっていません。
これから頑張っていこうと思います。
いちおう質問は
(2)の 指定した行から行まで印刷を意識していました。
なんとなく できました。
詳しい回答 ありがとうございました。
No.2
- 回答日時:
InputBoxを利用して、
Dim i, j
i = Application.InputBox("開始番号を入力して下さい", Type:=1)
j = Application.InputBox("終了番号を入力して下さい", Type:=1)
If i = False Or j = False Then Exit Sub
For n = i To j
Range("A1").Select
ActiveCell.FormulaR1C1 = n
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next n
とか。
InputBoxというのは
今まで使ったことがありませんでした。
他の人が作っているのは使ったことがあったのですが
いつも
「どうやって作るのだろう?」程度のことを考えていました。
実際に 初めて使ってみて
簡単にできることがわかりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Excel(エクセル) 【マクロ】プリントスクリーンした画像をエクセルに貼付して印刷したい 6 2022/11/30 20:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel(VBA)データ入力に応じて...
-
条件に応じて特定の行を非表示...
-
Excel2007で、太字にした行のみ...
-
エクセルで数値を簡単に加算したい
-
エクセルで、行ごとの並び替え...
-
エクセルのマクロを教えてくだ...
-
エクセル VBA 小数点を含む数字...
-
「マクロ」の足し算の式を教え...
-
wordのvbaでハイパーリンク設定...
-
Excel にて非表示行を探すワー...
-
excel ある部分だけをコピペし...
-
昨日、エクセルVBAで、隣のセル...
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
特定のセルだけ結果がおかしい...
-
EXCEL:同じセルへどんどん足し...
-
エクセルで前シートを参照して...
-
シート名を参照して、そのシー...
-
エクセルでファイルを開いたと...
-
Accessのスプレッドシートエク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
Excel にて非表示行を探すワー...
-
条件に応じて特定の行を非表示...
-
excel ある部分だけをコピペし...
-
エクセルで全ての数字間にカン...
-
エクセル VBA 小数点を含む数字...
-
Excel2007 セルを右方向に削除...
-
値貼り付けをしても書式も貼り...
-
Excel(VBA)データ入力に応じて...
-
「マクロ」の足し算の式を教え...
-
Excelでセル内の数式は残し値だ...
-
wordのvbaでハイパーリンク設定...
-
エクセル2003でマクロをおこな...
-
VBA コピーを有効行までループ...
-
エクセルで特定の行を消して間...
-
EXCEL マクロで「キーワード入...
-
エクセル マクロ オートシェ...
-
yyyy/mm/ddの日付に一括変換す...
-
Excelで周期的に列を削除する方法
-
並べ替えのマクロで対象行の範...
おすすめ情報