プロが教えるわが家の防犯対策術!

ある条件に一致したシートのみ印刷するというマクロを作成しました。
そのマクロをメニューバーから実行させると、うまく実行されるのですが、
マクロボタンを作って、そのボタンをクリックすると、きちんと実行されないのです。
何が間違っているのでしょうか。

図形で四角形を描く → 図形上で右クリック → マクロの登録 → 登録したいマクロを選択

このようにマクロボタンを作りました。他のマクロは、ボタンをクリックしても動くのに、印刷するマクロのみ、動かないのです。メニューバーからの実行は、動くのに・・・
なぜでしょうか。
どうぞよろしくお願い致します。

質問者からの補足コメント

  • つらい・・・

    画像の添付シート「発行シート」の右側に「納品書1」「納品書2」・・があって、●印がついているシート名のみ印刷するマクロを作成しました。
    Sub 納品書印刷()
    Dim myRow As Long
    For myRow = 7 To Cells(Rows.Count, 18).End(xlUp).Row
    If Cells(myRow, 18).Value = "●" Then
    Sheets(Cells(myRow, 17).Value).PrintOut
    End If
    Next myRow
    End Sub

    「発行シート」にある青色のマクロボタンをクリックすると、4シート分印刷されないといけないのに、2シート分しか印刷されないのです。
    メニューバーからマクロを実行すると、きちんと4シート分印刷されるのです。
    何がおかしいのでしょうか。すみません。どうぞよろしくお願い致します。

    「マクロボタンを作ってのマクロ実行ができな」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2016/02/23 15:30

A 回答 (3件)

「きちんと実行されない」とは、具体的にどのような状況になるのでしょうか?(エラーが出るとか、結果がおかしいとか)


特定のシートがアクティブでないと正しく動かないようなマクロを組んでいる訳ではないですよね?
この回答への補足あり
    • good
    • 0

印刷されない納品書の「●」マークですが、後ろに空白が入ってたりしませんよね?


正しく入力するか、次のようにTrim関数で前後の空白を除去して判定すれば大丈夫だと思います。
しかし、最初の質問から趣旨がずれているような気がするのですが…。

Sub 納品書印刷()
Dim myRow As Long
For myRow = 7 To Cells(Rows.Count, 18).End(xlUp).Row
If Trim(Cells(myRow, 18).Value) = "●" Then
'Sheets(Cells(myRow, 17).Value).PrintOut '←この行、間違ってませんか?
Cells(myRow, 17).PrintPreview '←正しくはこうかな?
End If
Next myRow
End Sub
    • good
    • 0
この回答へのお礼

●の後ろに空白は入っておりません。
'Sheets(Cells(myRow, 17).Value).PrintOut '←この行、間違ってませんか?
Cells(myRow, 17).PrintPreview '←正しくはこうかな?
  ↓
間違っていないです。印刷プレビューを表示したいのではなく、印刷をしたいからです。また、このように記述すると、「納品書1」という文字のみが印刷プレビューされます。
「納品書1」シート全部を印刷したいので、記述は間違っていないように思います。

色々と親身になって回答頂き、ありがとうございました。

お礼日時:2016/02/23 17:33

冗長ですが、


Sub 納品書印刷2()
 Dim myRow As Long
 Dim AKS As Worksheet
 Set AKS = ActiveSheet
 For myRow = 7 To Cells(Rows.Count, 18).End(xlUp).Row
   If Cells(myRow, 18).Value = "●" Then
     Sheets(Cells(myRow, 17).Value).Select
     calculate
     ActiveWindow.SelectedSheets.PrintOut
     AKS.Select
   End If
 Next myRow
End Sub
としてみるとか(地震ないけど)
他には繰り返し構文の前にプレビューを入れてみるとか
    • good
    • 1
この回答へのお礼

できました。完璧です。
以前にも何回も助けて頂き、本当に尊敬します。ありがとうございました。

お礼日時:2016/02/24 16:56

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

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