「覚え間違い」を教えてください!

Excelで1ページに同じ表を2つ作成し、それぞれに連番を振って印刷した後に切り離して利用したいと考えています。
連番の位置の都合上、ヘッダーやフッターの機能では対応できません。

例えば、表1、表2を1ページに作成し、表1内のセルA1に「1」、表2内のセルA10に「2」と入力し、10部印刷したとします。
1部目は表1のA1の場所に「1」、表2のA10の場所に「2」と印刷され、2部目は表1に「3」、表2に「4」と印刷される、といった具合で、10部目は表1に「9」、表2に「10」となります。
また、A1に「5」、A10に「6」と入力した状態で印刷した場合は、1部目は表1に「5」、表2に「6」、2部目は表1に「7」、表2に「8」となりようにしたいです。

解決策を検索すると、マクロを開いて印刷部数を直接記述する方法がありますが、その作業ができない人も印刷するため、単純に表1、表2にスタート時の番号を入れておけば、後は印刷した部数分、自動で番号が1ずつ増えていくようにしたいです。
ボタンを設置してマクロを実行する形は問題ないと思います。

環境はExcel2010、Windows7です。
説明がややこしくなりましてすみません。
どなたかご教示のほど、よろしくお願いします。

A 回答 (2件)

No.1です。



補足の
>A1セルに「=E1」として試したところ、印刷は上手くいくのですが、
>その後A1セルの式が最後に印刷された数値に置き換わってしまうため、
>2回目から上手くいかない状況です。

についてですが、最終的に印刷終了時には最初の状態になればよい!というコトでしょうかね?

前回のコードではA1・A10セルは数式ではなく値そのものが入るようにしていましたので、
最後の行でA1セルの数値を印刷終了時の段階にするよういしていました。

一案ですが、
A10セルは操作せずに単に
=IF(A1="","",A1+1)
という数式を入れておき、
A1セルには
=IF(E1="","",E1)
という数式を入れておいて、↓のコードに変更してみてください。
(マクロ実行時、A1セルの数式は消えて「値」になりますが、最後にもう一度数式に戻してみました)

Private Sub CommandButton1_Click()
'A1セルはE1セルを参照の場合

Dim k As Long, cnt As Long
If Range("A1") <> "" Then
k = Application.InputBox("印刷部数を入力してください。")
Do Until cnt = k
cnt = cnt + 1
ActiveSheet.PrintOut
Range("A1") = Range("A10") + 1
Loop
Range("A1").Formula = "=IF(E1="""","""",E1)"
Else
MsgBox "E1セルに入力してください。", vbOKOnly
Range("E1").Select
Exit Sub
End If
End Sub
    • good
    • 0

こんにちは!



Sheetにコマンドボタンを配置し、それをクリックするとマクロ実行ではどうでしょうか?
A10セルは必ずA1セルの次番号だという前提での一例です。

開発 → 挿入 → ActiveXコントロールのコマンドボタンを挿入 → 挿入したコマンドボタン上でダブルクリック
→ VBA画面に↓のコードをコピー&ペースト → ExcelSheetに戻り デザインモードを解除
あとは普通にコマンドボタンをクリックしてみてください。

Private Sub CommandButton1_Click() 'この行から
Dim k As Long, cnt As Long
If Range("A1") <> "" Then
k = Application.InputBox("印刷部数を入力してください。")
Do Until cnt = k
cnt = cnt + 1
Range("A10") = Range("A1") + 1
ActiveSheet.PrintOut
Range("A1") = Range("A10") + 1
Loop
Range("A1") = Range("A1") - 2
Else
MsgBox "A1セルに数値を入力してください。", vbOKOnly
Range("A1").Select
Exit Sub
End If
End Sub 'この行まで

※ このままではコマンドボタンも一緒に印刷されます。
コマンドボタンを印刷したくない場合は「デザインモード」をクリック → コマンドボタン上で右クリック
→ コントロールの書式設定 → 「プロパティ」タブ → 「オブジェクトを印刷する」のチェックを外します。

こんな感じではどうでしょうか?m(_ _)m

この回答への補足

早々にありがとうございます!

さっそく実行してみたところ、まさに要求通りの動作をしました!
大変助かりました!

追加で恐縮なのですが、現在A1セルに入力する形をとっていますが、たとえばE1セルに数値を入力するようにして、その数値がA1セルに反映されるようにすることは可能でしょうか?
A1セルに「=E1」として試したところ、印刷は上手くいくのですが、その後A1セルの式が最後に印刷された数値に置き換わってしまうため、2回目から上手くいかない状況です。

よろしくお願いします。

補足日時:2013/01/19 16:48
    • good
    • 0

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

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


おすすめ情報