- ベストアンサー
エクセル VBA 飛ぶセルの自動連番のつけ方
- みんなの回答 (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
その他の回答 (4)
- HohoPapa
- ベストアンサー率65% (455/693)
ナンバーリングする部分を中央印字させているようなので それを加味して再掲示します。 印刷範囲、行高、行幅、背景色、デザインなどの設定は済んでいて、 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% (455/693)
印刷範囲、行高、行幅、背景色、デザインなどの設定は済んでいて、 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
- ベストアンサー率47% (772/1616)
これ、150枚分シートを作って、1ページ30枚になるように調整して、印刷の範囲指定だけをマクロでやったほうがよくないですか。 サイズ等は調整して下さい。 但し、範囲指定でやっているので、1~1を指定しても、1~3が出ます。 PrintOutのコメントを外せば、印刷もされます。
- imogasi
- ベストアンサー率27% (4737/17069)
割引券部分を 標準モジュールに 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列を表したいためこうした。列レイアウトを変えるならこの式を考え直してください。
お礼
早々のご回答ありがとうございました。 ばっちり起動しました(^O^) 色々と勉強させて頂き大変感謝しております。!(^^)!