空白行になるまでループするマクロの作成方法

このQ&Aのポイント
  • Excelマクロを使用して、空白行になるまでループする方法を教えてください。
  • シート1にあるデータをシート2にvlookup関数を使用して表示させ、番号ごとに印刷する方法を知りたいです。
  • シート2に番号1の内容を表示し、印刷後、番号2の内容を表示し、番号行が空白になったら処理を終了するマクロの作成方法を教えてください。
回答を見る
  • ベストアンサー

空白行になるまでループし、印刷するマクロを教えて下さい

シート1にデータがあり、シート2にvlookup関数を使用して、 番号に対応する登録番号・所属・氏名を表示させるようにしました。 質問なのですが、 A2に番号が1~3まであり、空白(空白行)になるまで シート2に登録番号・所属・氏名を表示させ 番号ごとに印刷をしたいと思っています。 シート2に番号1の内容(登録番号・所属・氏名)を表示させ印刷し、 印刷後、シート2に番号2の内容を表示させシート2印刷し、 印刷後、シート2に番号3の内容を表示させシート2印刷し、 番号行が空白になったらこの処理を終了するというマクロを作りたいのですが、 どのようにしたらよいですか。 初心者でよく分からないのですが。 皆さん教えて下さい。 【シート1】 番号 登録番号 氏 名 所属学科 職名 1 00001 田中 健太 機械工学科 教授 2 00201 音   光 機械工学科 講師 3 01525 鈴木 洋  機械工学科 助手 【シート2】 番号 登録番号: 所属: 氏名:

  • foo-m
  • お礼率65% (82/126)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Dim r As Integer r = 1 Do Sheet2.PrintOut Copies 1 r = r + 1 Loop Until Cells(r, 1) = "" これを応用してみて下さい。

foo-m
質問者

お礼

早急な解答有難うございました。 マクロを参考にさせて頂きました。 下記のように書き、うまく実行出来ました。 有難うございました。 Sub test() i = 1 Do While i < 3 Worksheets("Sheet1").Range("b1").Value = i i = i + 1 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Loop End Sub

関連するQ&A

  • Excel 空白行を上に詰めるマクロ

    関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2   A   B   C     A  B  C 1 あ  い  う   1 あ  い  か 2        か   2 (空白行) 3 き  く   け    3 き  く  し   4 こ  さ   し   4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。

  • エクセルで差込印刷:マクロとVLOOKUP

    みなさん、こんにちは。 今回、マクロを作成する際にどうしてもうまくいかない部分がありまして とても困ってしまい、初めて会員登録し質問させていただいております。 皆様に御教授いただき真摯に勉強させていただきます。 どうぞよろしくお願いいたします。 (マクロ初心者で簡単なガイドブックやネットを参考に作成しています。) 今回エクセルのみを使った差込印刷のマクロを作成したいのですが、 まず、Sheet1に「5列×20行の表」があり、下記内容が入っています。 A列:行番号1~20 B列:会員番号 C列:所属名 D列:日付 E列:氏名 Sheet2に「手紙のフォーム」があり、 Sheet1の表の各項目を、VLOOKUPを使用し、 Sheet2の各位置へ差込むように設定をしました。 (VLOOKUPの検索値は、Sheet2の"R1"となるよう設定しています。) データを差し込んだSheet2の1ページを印刷したいです。 今回どうしてもうまくできないのが、手紙は毎回違う人へ違う人数分作成するので、 印刷時点で表に入力されている人の数だけを印刷したいため、 E列(氏名)が空白になったら停止する設定をしてみたのですが 下の自分で作ったマクロを実行すると、全ページが印刷されてしまいます。 Sub 差込印刷() 行 = 2 Dim 番号 As Integer For 番号 = 1 to 20 If Sheets("sheet1").Cells(行,5).Value = "" Then Exit for Sheets("sheet2").Range("R1").Value = 番号 Sheets("sheet2").PrintOut from:=1,To:=1 Next 番号 行 = 行 + 1 End Sub とても単純なミスをしているのだと思うのですが なにぶん初心者なためそれに気がつくことができません。 (For~Next等も見よう見まねで初めて使いました・・・) 月曜日までに分かるととても助かるのですが、 皆様どうぞよろしくお願いいたします。

  • 1行から2行へのコピーなんですが

    データベースとなるシートの任意の連続する複数行を違うシートの2行にコピーしたいと考えています。 要は、 番号、氏名、社員番号、生年月日・・・と続く1行のデータを 印刷するためのシートへ 番号、社員番号・・・ 氏名、生年月日・・・のように2行にしたいのです。 1行から1行であればエクセルの基本的な機能で出来ますが、 1行から複数の行へ、終わったら次の行へ移る、の2点でつまづいております。 マクロ初心者へアドバイスお願いします。

  • エクセルのマクロで印刷設定(最終行空白カット)

    エクセルの印刷設定をマクロでしたいと考えています。もとから印刷設定を1万行に設定してあるシートに、データがはいっています。 下の空白行をカットして印刷できるようなマクロを探しています。 横幅は設定しなくても用紙の中に入ります。 縦幅のみ1万行(データは数十ページ)あります。 1万行に設定している理由は、大容量のデータベースから必要項目のみ抽出して1万行シートに転写しているからです。 よろしくお願いいたします。 Excel2002

  • 開始行と最終行を指定して差し込み印刷するマクロ

    エクセルのマクロで、最終行と最終行を指定して差し込み印刷するマクロをお教えください。 印刷したい個人番号のスタートと終了を指定して、数字を1ずつ増やしながら印刷する場合は、下記のマクロでうまくいきます。 「個人票」のシートを差し込み印刷します。「個人票」シートの個人番号をA8セルに入力すると別に作成した「成績表」シートからVLOOKUP関数を使って氏名や各科目の得点、合計得点を表示するようにしてあります。「個人票」シートのA3セルには「自」、B3セルには「至」、A8セルには「個人番号」と名前を付けてあります。 Sub 個人票印刷() Range("個人番号") = Range("自") Do While Range("個人番号") <= Range("至") Sheets("個人票").PrintOut Range("個人番号") = Range("個人番号") + 1 Loop End Sub 今回、行いたいのは「成績表」シートのA列にある個人番号が不連続であったり、欠番があったりします。そこで、「成績表」シートのA列の例えば、A4からA10までというように、開始行と最終行を指定して、差し込み印刷するようにしたいのです。 できれば上の構文を生かしたいのですが、ご教授のほどよろしくお願い申し上げます。

  • セル内のデータが空白の場合、その行は印刷しない

    エクセルデータで1000行、列項目が10項目ある表を作りましたが、データのない項目があるので印刷時にデータのない行は印刷しない方法を教えてください。 ただし、AとB列は品名と品名コードが常に表示されます。 データとして在庫数、重量、単価の項目があり金額は重量×単価の計算式があります。 ※在庫数、重量、単価が空白の場合はその行は空白行とみなし印刷しないようにする。  また、プレビューで見た場合も空白行は詰めて表示されること ※在庫数、重量、単価のセル内には関数が登録されておりデータが0の場合は空白となるように 設定してあります。  サンプル画像を添付しますのでよろしくお願いします。

  • 関数による空白行を除き範囲を選択するマクロ

    添付ファイルのシートが同じファイル内にある別シートの値を参照の上、元シートの入力がない場合は、if関数により空白表示する様にしてあります。(関数自体は1万行くらいまで入力すみです。) このシートの空白表示以外のセル(A6:i22)までを選択するマクロを組みたいのですが普通のrange(A6:i6).End(xlDown).Rowを使うと空白表示行を含めた関数のある最終行を選択してしまいます。 サンプルの(A6:i22)をうまく選択するマクロを教えてください。

  • エクセルマクロ:空白行を除いてコピー

    マクロで次の作業を処理したいのですが、どのようなコードを書けばよいのでしょうか?教えてください。よろしくお願いします。 ○sheet1 ☆左側 列B~Hをワンセットとしたものが、計51行ある。先頭はタイトル行で9行目である。 D列には固定の文字列が与えられており、E列はブランクで、D・Eともに非表示にしておきたい。 B10~B59には、固定で1~50の数字が順番に与えられている。 C10~C59、G10~G59、H10~H59には数値が、F10~F59には文字列が入力される。 空白の場合もあり、どの行に入力されるかは不明。 ☆右側 列J~Pをワンセットとしたものが、計51行ある。先頭はタイトル行で9行目である。 J10~J59には、固定で51~100の数字が順番に与えられている。 K10~K59、M10~M59、O10~O59、P10~P59には数値が、L10~L59、N10~N59には文字列が入力される。 空白の場合もあり、どの行に入力されるかは不明。 ○sheet2 sheet1のボタンをクリックし、sheet2を表示させ、 sheet1の値を次のようにsheet2に貼付けたい。 sheet2のB8~H107の範囲内で上から、sheet1の左側B10~H59と右側J10~P59の空白を含む行を除いた セット(列B~H、列J~P)のみをコピーし、左側と右側を連続して、値のみ貼付けたい。 ※C列とK列の空白を判定すれば良い ※並べ替えなどのために別シートを置きたくない ※非表示列の扱い方

  • VBA 印刷について(空白ページを印刷しない)

    エクセル VBAで空白のシート及び空白ページを印刷しない方法を教えてください。 見積明細シートが明細1、明細2と9まであります。 各シート見積もりの内容によりページ数が異なり 入力の無いシートもあります(明細3以降入力無し等) 又、2行目まではタイトル行のためシートに最初から入力済みです。 縦横とも罫線を引いてあります。 A    B   C   D    E   F 1 項目  適用  単価  単位  金額   備考← タイトル行 2                        ← タイトル行 3 ここから入力 4 5 ↓ 1ページ23行 例えば、明細1 24行まで入力した場合、2ページめの最後(44行目まで) 印刷したい。 明細2以降 タイトル行以外にデーターが有れば印刷、なければ印刷しない。 様な感じです。 最終行まで印刷するところまでは自力でたどり着いたのですが、それだと最終行よりしたの罫線が印刷されなくて困っています どなたかご教示願います

  • excelのマクロで条件による行の挿入

    列AとBがあり列Aに学校のクラス名A組、B組、C組・・・(20クラスほど)と氏名が 入るエクセルシートがあるのですが 先頭行はA組から始まり5行区切りで数え、(A組も5行のうちに入る) その5行内に次のB組が入らないように空白行を挿入したいです もし、5行以内にB組がない場合、次の5行でまたB組があるか判定しなければ氏名5つ あれば空白をいれてというのを20クラスぶん作るマクロは可能でしょうか? VBAの知識がさっぱりないので途方にくれています。 元のデータの例   マクロ実行後 列A   列B      列A   列B A組           A組   氏名1 111      氏名1 111  氏名2 222      氏名2 222 B組           空白行挿入 氏名3 333      空白行挿入 氏名4 444      B組 氏名5 555      氏名3 333 氏名6 666      氏名4 444 氏名7 777      氏名5 555 C組 氏名6 666              氏名7 777              空白行挿入              空白行挿入              空白行挿入              空白行挿入              C組