再びこんにちは。
Excel97ですがやはりダメでした。
どうやらダイアログシートがモーダル中はダメみたいですね。
UserFormだと問題なさそうですが。。。
代替案としてFLGで処理の有無を判断して、シートのボタン(フォームのボタン及びCommandButton)から SokutyoCalc を呼んだ場合はそれっぽくなりましたが。。。
Option Explicit
Dim flg As Boolean
Sub SokutyoCalc()
Dim msgResult
flg = False
DialogSheets("SokutyoDialog").Show
If flg Then
msgResult = MsgBox("このまま印刷も?", vbYesNo + vbQuestion, "印刷")
If msgResult = vbYes Then Application.Dialogs(xlDialogPrint).Show
End If
End Sub
Sub CalcBegin_Click()
flg = True
Worksheets("ラベル印刷").Activate
Worksheets("ラベル印刷").Range("A1") = "なんかの処理"
DialogSheets("SokutyoDialog").Hide
End Sub
こんにちは。
Excel97しか持ってないので外してるかも知れません。
CommandButtonなどから呼んだ場合に「1004」が出る時は「ActiveCell.Activate」を入れてます。
Excel97で、Sheet1上にCommandButtonを1つ置き、Clickイベントに
Private Sub CommandButton1_Click()
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Copy after:=Worksheets(1)
End Sub
だと「実行時エラー1004」が出ますが、
Private Sub CommandButton1_Click()
ActiveCell.Activate
Worksheets("Sheet1").Copy after:=Worksheets(1)
End Sub
だとコピー出来ます。
同様の原理で↓とかにしてみたらどうでしょう?
Sub printtest()
ActiveCell.Activate
Worksheets("ラベル印刷").PrintOut
End Sub
お礼
なるほど発想の転換ですね。 ダイアログを呼んだ元のサブルーチンから、 ダイアログの処理終了後に印刷すれば良いのですね。 単純にワークシート印刷コマンドを付け足して試したらうまくいきました。 自分一人では思いつかなかったと思います。 ありがとうございました。