自分がやりたい事はExcelでブックを開く度にナンバリングが自動生成され、都度印刷の度に部数に応じてその数が自動で加算されていくというようなものです。
過去の質問において下記のような回答を見つけました
Private Sub Workbook_Open()
Dim cnt As Long
Dim シート名, セル, 文字列 As String
シート名 = ActiveSheet.Name
セル = "B2" '←ナンバーを入れるセル(Range("C2")なら"C2")…(1)
cnt = Len(Sheets(シート名).Range(セル))
If cnt = 0 Then
Sheets(シート名).Range(セル) = "No." & Format(InputBox("発行No.の初期値をセットしてください。"), "0000")
Else
文字列 = Right(Sheets(シート名).Range(セル), cnt - 3)
cnt = Val(文字列)
cnt = cnt + 1
Sheets(シート名).Range(セル) = "No." & Format(cnt, "0000") '←桁数をセット(5桁なら"00000")…(2)
End If
End Sub
上記の記述は自分のやりたい事とほぼ一致しているのですが、この場合では複数枚印刷すると同じナンバリングの用紙がでてきてしまいます。
例えば、ブックを開いた際に自動生成された数がNo.0005だとして、10枚印刷した場合にNo.0005から連番で印刷され、次回ブックを開いた際にNo.0015から始まるといったような事です。
別シート等を使うような方法でも構わないので何か良い方法はありますでしょうか?
また不特定多数の人が出力した際に上書き保存をして終了しない人がいた場合等は上記の記述でのナンバリングは成立しませんが、そのような環境において通しでのナンバリングを成立させる方法はありますでしょうか?(Excel以外になったとしても)
解りにくいかもしれませんが、ご教授頂ければ幸いです。
No.1ベストアンサー
- 回答日時:
準備:
印刷したいシートの番号を入れたいセル(仮にB2セル)に、セルの書式設定の表示形式のユーザー定義で
"No."0000
と設定しておき、とりあえず暫定的に数字の1を記入しておく
手順:
いまのWorkbook_Openマクロを消して、次のマクロに差し替える
private sub Workbook_BeforePrint(Cancel as boolean)
dim c as variant
dim i as long
c = inputbox("HOW MANY COPY")
if val(c) = 0 then exit sub
cancel = true
application.enableevents = false
for i = 1 to c
with worksheets("印刷したいシート名")
.printout
.range("B2") = .range("B2") + 1
end with
thisworkbook.save
next i
application.enableevents = true
end sub
ブックを保存して開き直し、印刷する。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
日付が未入力の際はゼロか、空...
-
(Excel)あるセルに文字を入力...
-
エクセルで1月0日と表示される!!
-
Rangeメソッドは失敗しました。...
-
複数シートの同じセル内容を1シ...
-
Excelシートの保護時にデータの...
-
Aというブックの1というシート...
-
エクセルのルビがついたセルを...
-
エクセルの文字
-
別シートのセルを絶対参照にする
-
エクセルのフッタやヘッダーに...
-
シート参照で変数を使いたい(EX...
-
EXCELマクロで、シート間でのコ...
-
エクセルで20万行あるシート...
-
VBAで変数に関数式の結果をセッ...
-
VBAで、セル(Range)のオブジ...
-
excelでハイパーリンクになって...
-
マクロ セルに入力されたシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
(Excel)あるセルに文字を入力...
-
別シートのセルを絶対参照にする
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで、加筆修正したセル...
-
シート参照で変数を使いたい(EX...
-
エクセルで複写のように自動入...
-
Excelで複数シートの選択セルを...
-
INDIRECTを使わず excelで複数...
-
ExcelでTODAY関数を更新させな...
-
式の説明をお願いします。
-
excelでハイパーリンクになって...
-
エクセルのルビがついたセルを...
-
Excelでスクロールすると文字が...
-
エクセル ハイパーリンクで画像...
おすすめ情報