• ベストアンサー

エクセルで変数が2つある連続印刷

VBA初心者です。困っていますのでよろしくお願いします。 エクセルでVBAを使って,個人の成績個票を連続印刷する方法について教えてください。 一枚の用紙に,上半分は1組の生徒の個票を,下半分には2組の生徒の個票を連続的に印刷します。 「個票sheetセルE3」には1組の生徒番号を,「個票sheetセルE27」には2組の生徒番号を連続的に流し込み,VLOOKUP関数によって別sheetにある成績データを読み込んでいきます。 仮に2枚(1枚は「1組の1番の生徒(101)+2組の1番の生徒(201)」の個票,もう一枚は「1組の2番の生徒(102)+2組の2番の生徒(202)」の個票)を印刷するコードはどうすれば良いのでしょうか。 下のようなコードでは組み合わせ可能な4枚の個票が印刷されてしまいました。 VBAの専門家の方,ご助言いただければ幸いです。 Sub 一組二組印刷() '個票を印刷するマクロです Dim 番号一組 As Integer For 番号一組 = 101 To 102 Sheets("個票").Range("E3").Value = 番号一組 Sheets("個票").PrintOut Next 番号一組 Dim 番号二組 As Integer For 番号二組 = 201 To 202 Sheets("個票").Range("E27").Value = 番号二組 Sheets("個票").PrintOut Next 番号二組 End Sub

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

ご質問を全て理解出来てませんが、、、 生徒番号が必ず +100 になるならば下記で良いのではないでしょうか? Sub Test() Dim 番号一組 As Integer  For 番号一組 = 101 To 102    Sheets("個票").Range("E3").Value = 番号一組    Sheets("個票").Range("E27").Value = 番号一組 + 100    Sheets("個票").PrintOut  Next 番号一組 End Sub

shadowpm
質問者

補足

説明が足りず申し訳ありません。 番号一組にある101や102という数字は,生徒番号を表します。 101=1組1番の生徒,102=1組2番の生徒,といった具合です。 具体的には,1枚目には「1組1番の生徒」+「2組1番の生徒」を,2枚目には「1組2番の生徒」+「2組2番の生徒」を印刷したいのです。 E3には1組の生徒番号101~102まで,E27には2組の生徒番号201~202までを連続的に流し込みたいと考えています。 よろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

Sub 一組二組印刷改良版() 'どうあっても番号二組を変数としたいようですので Dim 番号一組 As Integer, 番号二組 As Integer 番号二組 = 201 For 番号一組 = 101 To 102 With Sheets("個票") .Range("E3").Value = 番号一組 .Range("E27").Value = 番号二組 .PrintOut End With 番号二組 = 番号二組 + 1 Next 番号一組 End Sub

shadowpm
質問者

お礼

HERO_TKSさん、私の意図を理解してご投稿いただきありがとうございました。 変数を2つにすることにばかり気をとられていました。 変数の特性を見れば、変数は1つでよかったのですね。 わざわざ2変数とする方法を考案いただきましたことに、お礼申し上げます。

すると、全ての回答が全文表示されます。
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1です。 先の例ではダメだったですか?

shadowpm
質問者

お礼

papayukaさん、ありがとうございました。 初めコードを見たとき、意味が理解できす補足説明してしまいました。 確かにクラス毎に生徒番号は100ずつ繰り上がりますので、あのままで印刷することができました。 先の例ですと、変数も1つで済み管理が楽ですね。

すると、全ての回答が全文表示されます。

関連するQ&A