• ベストアンサー

エクセル VBA 飛ぶセルの自動連番のつけ方

エクセル VBA で添付画像のように1枚に30までの自動連番、 セルに1~150と入力すれば自動採番で5枚印刷できるような VBAをご教示下さい。 番号は001のような3ケタの場合でお願いします。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.5

さらにさらにごめんなさい。 先に示したコードでも動作しますが、 気がかりな記述になっているところがあるので、再掲示します。 Option Explicit Sub sample3()  Dim wkL As Integer  Dim wkC As Integer  Dim wkSH As Worksheet  Dim wkNum As Integer    Set wkSH = ThisWorkbook.Sheets(1)  wkNum = wkSH.Cells(1, 3).Value    Do     For wkC = 1 To 3    For wkL = 1 To 10     With wkSH.Cells(wkL * 3, wkC * 3)      .NumberFormatLocal = "@"      .HorizontalAlignment = xlCenter      .VerticalAlignment = xlCenter      .Value = Format(wkNum, "000")     End With     wkNum = wkNum + 1    Next wkL   Next wkC      wkSH.PrintOut     If wkNum > wkSH.Cells(1, 5).Value Then Exit Do    Loop End Sub

tasukoceo
質問者

お礼

早々のご回答ありがとうございました。 ばっちり起動しました(^O^) 色々と勉強させて頂き大変感謝しております。!(^^)!

その他の回答 (4)

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.4

ナンバーリングする部分を中央印字させているようなので それを加味して再掲示します。 印刷範囲、行高、行幅、背景色、デザインなどの設定は済んでいて、 VBAでやりたいことはナンバーリングと印刷指示だという理解でいいですね? また、番号の範囲(C1~E1:ナンバーリングする数)は 30の整数倍という条件で良ければ 次のようなコードとなりましょう。 Option Explicit Sub sample2()  Dim wkL As Integer  Dim wkC As Integer  Dim wkSH As Sheet1  Dim wkNum As Integer    Set wkSH = ThisWorkbook.Sheets(1)  wkNum = wkSH.Cells(1, 3).Value    Do     For wkC = 1 To 3    For wkL = 1 To 10     With wkSH.Cells(wkL * 3, wkC * 3)      .NumberFormatLocal = "@"      .HorizontalAlignment = xlCenter      .VerticalAlignment = xlCenter      .Value = Format(wkNum, "000")     End With     wkNum = wkNum + 1    Next wkL   Next wkC      wkSH.PrintOut     If wkNum > wkSH.Cells(1, 5).Value Then Exit Do    Loop End Sub

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.3

印刷範囲、行高、行幅、背景色、デザインなどの設定は済んでいて、 VBAでやりたいことはナンバーリングと印刷指示だという理解でいいですね? また、番号の範囲(C1~E1:ナンバーリングする数)は 30の整数倍という条件で良ければ 次のようなコードとなりましょう。 Option Explicit Sub sample1()  Dim wkL As Integer  Dim wkC As Integer  Dim wkSH As Sheet1  Dim wkNum As Integer    Set wkSH = ThisWorkbook.Sheets(1)  wkNum = wkSH.Cells(1, 3).Value    Do     For wkC = 1 To 3    For wkL = 1 To 10     wkSH.Cells(wkL * 3, wkC * 3).Value = "'" & Format(wkNum, "000")     wkNum = wkNum + 1    Next wkL   Next wkC      wkSH.PrintOut     If wkNum > wkSH.Cells(1, 5).Value Then Exit Do    Loop End Sub

  • SI299792
  • ベストアンサー率48% (714/1476)
回答No.2

これ、150枚分シートを作って、1ページ30枚になるように調整して、印刷の範囲指定だけをマクロでやったほうがよくないですか。 サイズ等は調整して下さい。 但し、範囲指定でやっているので、1~1を指定しても、1~3が出ます。 PrintOutのコメントを外せば、印刷もされます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

割引券部分を 標準モジュールに Sub test02() Range("A2:A51") = "割引券" Range("D2:D51") = "割引券" Range("G2:G51") = "割引券" End Sub 1ステートメントでもできるかもしれないが、テスト時間がないので。 ーーー 番号部分を標準モジュールに Sub test01() For j = 1 To 3 For i = 2 To 51 Cells(i, (j - 1) * 3 + 3) = (j - 1) * 50 + i - 1 Next i Next j End Sub でやってみて、どうですか。A,B列のセル結合と中央揃えは、VBAでもできるが、手動でやってください。質問のメイン課題ではないだろうから。 ーー Cells(i, (j - 1) * 3 + 3) = の(j - 1) * 3 + 3の部分は中学校で学ぶ、数列を代数式で表す訓練の結果です。これは3,6、9列を表したいためこうした。列レイアウトを変えるならこの式を考え直してください。

関連するQ&A

  • Excel VBAで結合セルに連番を振っていくには?

    Microsoft Excel 2003での質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、連番を振っていく作業をしています。 これをVBAを使って自動化したいのです。 列に連番がすでに入力されている最終行の下のセル(つまりこれから連番が入る空白セル)を選択、 範囲指定し(セル数はまちまちなのでこれは手作業)、 セルを結合させるまではできたのですが、 この結合させたセルに、[(一つ上の結合セル)+(1)]の値を入力させるにはどうプログラムしたらよいでしょうか? わかりにくい説明で恐縮ですが、どなたかご教示ください。

  • EXCEL マクロ・VBA 自動で連番を振る

    EXCELのマクロ・VBAについて質問です。 例えば、B列にデータを入力すると、入力した行まで自動的にA列に連番が入力されるようにしたいのですが、どういった方法があるでしょうか。 マクロやVBAについてはこれから勉強をしようと思っている素人ですので、コードとその解説をいただけると助かります。

  • 自動採番について

    初心者です。 Access2000で銀行管理DBを作っています。 (1)テーブルを入金用と出金用それぞれに作成 (2)データ入力用フォームもそれぞれに作成します。 入力にあたって入力番号を自動採番にしたいと考えてますが、番号の構成は数値10桁で、"年" + "月" + "連番"の組み合わせにしたいのです。例:2003070001 入金用と出金用それぞれ別に入力番号をつけます。 これを実現するために「採番テーブル」を別に作成しなければいけないようですが、 (1)採番テーブルの定義の方法 (2)入力フォームで自動採番するためのVBA記述の方法 についてアドバイスいただけないでしょうか? よろしくお願いします。

  • エクセルVBA・一定の条件でセルを選択したい

    エクセルVBA・一定の条件でセルを選択したい 添付した画像で、毎日、社員番号等が入力されます。 D列の内線番号は空白の場合もありますがA、B、C列は必ず入力されます。 添付画像だと「A1:D5」という具合に選択したいのです。 考え方としては、A列の*行に入力された場合は、「A1:D*」を選択するという具合になるかと思います。 私の目的は、セル範囲を選択したあと、並べ替えたいと考えています。 この並べ替えは自動記録でできそうです。 よろしくお願いします。

  • エクセルVBAで

    エクセルのVBAでやりたいことがあるのですが、 一枚のシートのセルA1に1が入っているとします。そこで自動でA2に2、B1に3、B2に4といったようにセルの値を一つずつ増やていったものを連番で10枚印刷しようと考えているのですがうまくいきません。ご教授願います。

  • VBAを使用し、自動でシートごとに連番を入れる方法

    Excel2003のVBAを使用し、自動でシートごとに連番を入れる方法を教えて下さい。 P0911~ P0950までとか番号が自由に設定出来て、尚且つ、最初の番号に入っているエクセルデータが最後の番号まで同じ内容で導入されているのが望ましいです。 どなたか、ご教示頂けると大変助かります。

  • エクセル 自動で連番ができない

    連番で数字が入力してあるセルがあり、 最後の数字が入力されているセルの右下にあわせ、 自動で連番の続きを出そうとしたのですが、 同じ数字が続くばかりです。 どこか設定を変える場所があるのでしょうか。 よろしくお願いいたします。

  • エクセルシートの塗りつぶしをVBAでやるには?

    エクセルのセル塗りつぶしについて(VBA) いつもお世話になっています。 エクセルシートで、任意のセルに数値を入力したとき、入力したセルから右側に向けて、その数値分、自動で塗りつぶすようにしたいのですが、どのようにすれば良いのでしょうか? 色は何でも構いません。 画像添付します。

  • エクセルのセル塗りつぶしについて(VBA)

    いつもお世話になっています。 エクセルシートで、任意のセルに数値を入力したとき、入力したセルから右側に向けて、その数値分、自動で塗りつぶすようにしたいのですが、どのようにすれば良いのでしょうか? 色は何でも構いません。 画像添付します。

  • エクセル シート追加時にセルに自動連番を入力。

    エクセルで顧客リストを作成しています。 シートを追加する方法でページを増やしていこうと考えて いるのですが、シートを追加すると会員No.と設けたセルに 自動で番号が連番で入力されるように設定したいです。 スタートの番号は00100から始めたいのですが。 宜しくお願い致します。

専門家に質問してみよう