アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロで、最終行と最終行を指定して差し込み印刷するマクロをお教えください。

印刷したい個人番号のスタートと終了を指定して、数字を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までというように、開始行と最終行を指定して、差し込み印刷するようにしたいのです。

できれば上の構文を生かしたいのですが、ご教授のほどよろしくお願い申し上げます。

A 回答 (3件)

ん? あぁ失礼しました、誤記ました。

(ていうか、至はB8じゃなくてB3と書いてあったんですね)


>「至」のセル(「個人表」シートのB3セル)に入力した番号まで

sub macro1()
 dim i as long
 for i = range("A3") to range("B3")
  range("A8").value = worksheets("成績表").cells(i, "A").value
  worksheets("個人票").printout
 next i
end sub

お手数をおかけして大変ごめんなさいでした
    • good
    • 1
この回答へのお礼

ありがとうございます。うまくいきました。御礼申し上げます。<m(__)m>

お礼日時:2012/05/03 14:44

自のセルに開始行(たとえば4)、至のセルに終了行(例えば10)を記入することで「指定した」ことにします。




sub macro1()
 dim i as long
 for i = range("A3") to range("B8")
  range("A8").value = worksheets("成績表").cells(i, "A").value
  worksheets("個人票").printout
 next i
end sub
    • good
    • 0
この回答へのお礼

Sub macro1()
Dim i As Long
For i = Range("A3") To Range("A8")
Range("個人番号").Value = Worksheets("成績表").Cells(i, "A").Value
Worksheets("個人票").PrintOut
Next i
End Sub

上のように3行目の右をA8に直したらうまくいきました。ありがとうございます。
ただし、4行目の「個人番号」セルに入力した番号までしか印刷されません。
「至」のセル(「個人表」シートのB3セル)に入力した番号まで印刷するには、どうしたらよいでしょう。

お礼日時:2012/05/03 13:20

次のように一部を追加してはどうでしょう。



Sub 個人票印刷()
Range("個人番号") = Range("自")
Do While Range("個人番号") <= Range("至")
Sheets("個人票").PrintOut
Do
Range("個人番号") = Range("個人番号") + 1
Loop Until Range("個人番号")<>""
Loop
End Sub

この回答への補足

早々の回答をありがとうございます。試してみたのですが、欠番のところはエラーのまま印刷れてしまいました。
行いたいことは、「成績表」シートのA列のA4セルからA10セルまでの数字が、たとえば1,4,7,11,13,19,22というように、不連続であるのです。しかも印刷したいのは、その1,4,7,11,13,19,22の7枚のシートだけなのです。よろしくお願い申し上げます。

補足日時:2012/05/03 10:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています