• ベストアンサー

For~Nextで印刷だけさせようとしましたが、うまく動きません

マクロの初心者です。まだほとんどわかっておりませんので、よろしくお願いします。 ユーザーフォームにシートの表の任意の番号を入力して、業者1から業者2までの連番で封筒に住所が印刷したくてコードを書きました。 変数 i の使い方がわからないので教えてください、お願いします。 Private Sub Cmb業者1_AfterUpdate() '番号に対し業者名を表示する '変数の宣言 Dim MyKC As Long 'Txt業者に対応する業者名を表示する MyKC = Cmb業者1.Value Txt業者名1.Text = Application.WorksheetFunction. _ VLookup(MyKC, Range("電気住所"), 3) End Sub ------------------------------ Private Sub Cmb業者2_AfterUpdate() '番号に対し業者名を表示する '変数の宣言 Dim MyKCC As Long 'Txt業者に対応する業者名を表示する MyKCC = Cmb業者2.Value Txt業者名2.Text = Application.WorksheetFunction. _ VLookup(MyKCC, Range("電気住所"), 3) End Sub ------------------------------ Private Sub Cmd印刷_Click() '変数の宣言 Dim i As Long 'プリンターの設定 Application.ActivePrinter = "Canon iP4300:" '印刷クリック時の処理 For i = MyKC To MyKCC Range("A1").Value = i.Value            ここの i で止まります ActiveSheet.PrintOut Copies:=1 Next i Unload Form電気業者印刷 End Sub ------------------------------ Private Sub Cmd終了_Click() '「終了」ボタンをクリック時の処理 'MyDlgにFalseを代入し、フォームを閉じる MyDlg = False Unload Form電気業者印刷 End Sub 単純に印刷するだけです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

コードだけで推測します。 > For i = MyKC To MyKCC ここで使われているMyKCとMyKCCは、他のプロシージャの内側で宣言されているため、Private Sub Cmd印刷_Click()からは見えません。常に0が入るので、A1が0となります。 Dim MyKC As Long Dim MyKCC As Long をそれぞれSubプロシージャの外側に出し、Subの内側での宣言は削除してください。。 Dim MyKC As Long  ←Subの外側で宣言 Dim MyKCC As Long  ←Subの外側で宣言 Private Sub Cmb業者1_AfterUpdate() ・・・ Dim MyKC As Long ←ここは削除かコメントアウト ・・・ End Sub Private Sub Cmb業者2_AfterUpdate() ・・・ Dim MyKCC As Long ←ここも削除かコメントアウト ・・・ End Sub

daibaas
質問者

お礼

Wizard_Zero様 ありがとうございます。 A1 が 0 ではなく入力されました。 今度は MyKC の値を繰り返し印刷してしまい、値が変化しません。 封筒の印刷のためプリンターから一々紙の確認をしてくるのでだめなのでしょうか。 できれば確認もマクロ内に書きたいのですが、わかりません。 よろしくお願いします。

daibaas
質問者

補足

Wizard_Zero様 すみませんでした。 私の勘違いで、動きました。 ありがとうございました。 封筒の印刷のためプリンターから一々紙の確認をしてくるのを、できれば確認もマクロ内に書きたいのですが、わかりません。 できましたらよろしくお願いします

その他の回答 (1)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

i.Value は i だけでいい .valueはセルなどの値を使うとき range("A2").value A2セルの値 他のコードは見てません気づいたところだけ

daibaas
質問者

お礼

早速の回答ありがとうございます。 i で動きましたが今度は A1 の値が 0 になってしまいました。 変数の定義が間違っているのでしょうか。 よろしくお願いします。

関連するQ&A