先ほどのコードを修正するけど

Sub ボタン2_Click()

Dim i As Long

Sheets("納品書").Select

 For i = 2 To Sheets("取引先").Rnage("A" & Rows.Count).End(Xlup).Row

  Rnage(”A11").Value =.Sheets("取引先").Range("A" & i).Value

 Sheets("納品書").PrintPreview

 Next

Sheets(ボタンを配置したシート名).Select

End Sub

ボタンをクリックすると

納品書のシートに、取引先名が順番に入って

それぞれの納品書のリストが表示されて

印刷レビューの画面が表示されるだろう。

※印刷すると紙が無駄なので、印刷しない をクリックしてください。

(おお、確かに、フィルターオプションの条件が順次変わって

 シートのChangeが実行される。

 納品書に必要なリストが表示されている。)

・ボタンをクリックしてマクロを実行

・納品書の A11(11行目)が変更される。

・シート納品書のChangeイベントが実行される。

・納品書に必要なデータ一覧が表示(フィルターオプション)される。

・印刷画面が表示される。

この順番で Changeイベントが実行されます。

マクロの実行=>Changeイベント=>関数

と実行の優先順位があります。

「だいぶ、イメージと近くなったけど

 ・今日は出荷がない取引先も表示されてしまう。

 こちらは、解決できるか?}

「当り前だ、さっきのIf文を使うんだ。

 納品書には、合計金額があるだろ

 例 E9セルに Sum関数で合計金額(或いは 13行目の商品名等でも大丈夫です)

 もし、 合計金額 が 0円以上(>0) の場合(Then)にPrintOutさせるんだ。」