[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA:差込印刷』(masabou5)
いつもお世話になります。 100人くらいの名簿があり、sheet1のTextBox1とTextBox2に二人ずつの名前を差し込んで、 連続印刷したいと思っています。 下記のようなコードを書きましたが、3人以上の場合、うまく印刷できませんでした。 例えば、10人の場合、二人ずつ印刷して、計5枚の連続印刷をしたいのですが、どうもうまく行きません。 何が問題なのかご教授下さい。よろしくお願いします。
For i = 3 To 99 Step 2 With Cells(i, 1) If .Value <> "" Then Sheets("sheet1").TextBox1 = .Value Sheets("sheet1").TextBox2 = .Offset(1, 0).Value Sheets("sheet1").PrintOut End If End With Next i
>Sheets("sheet1").TextBox1 = .Value ↓ Sheets("sheet1").Shapes("Text Box 1").TextFrame.Characters.Text = .Value これで試してみてください (kohe)
koheさん、ありがとうございました。 ただ、「指定した名前のアイテムが見つかりません」というメッセージが出ます。 どうすればいいでしようか?(masabou5)
私の最初のコードで4人分、例えばA,B,C,Dさんの場合、連続印刷したとき、 A, D, C, Dさんと印刷されました。 これは、プリンタ−にデータを送る時のデータスピードによる原因なのでしょうか? もし、そうだとしたら、どのようなコードを書けばよろしいのでしょうか?(masabou5)
>「指定した名前のアイテムが見つかりません」というメッセージが出ます。
テキストボックスの番号が違っているんだと思います マクロの記録でTextBox番号を確認して見てください (kohe)
koheさん、テキスト番号は合っていました。 すみません、再度お伺いします。 単に下記のように書き換えればいいのでしようか?(masabou5)
For i = 3 To 99 Step 2 With Cells(i, 1) If .Value <> "" Then Sheets("sheet1").Shapes("Text Box 1").TextFrame.Characters.Text = .Value Sheets("sheet1").TextBox2 = .Offset(1, 0).Value Sheets("sheet1").PrintOut End If End With Next i
Sub test() Dim i As Long For i = 3 To 99 Step 2 With Cells(i, 1) If .Value <> "" Then Sheets("sheet1").Shapes("Text Box 1").TextFrame.Characters.Text = .Value Sheets("sheet1").Shapes("Text Box 2").TextFrame.Characters.Text = .Offset(1, 0).Value Sheets("sheet1").Printout End If End With Next i End Sub
こちらでは ↑これでmasabou5さんのご希望どうりに動いてますヨ
koheさん、いろいろとお世話をおかけしました。 結論からいえば、うまく動作するようになりました。 私のテキストボックスは、ActiveXコントロールツールボックスで作ったテキストボックスでした。 Shapesだったので、早く気付けばよかったのですが、 オートシェイプのテキストボックスとは気付きませんでした。 いずれにしても、当初の目的を果たし、連続差込印刷に成功しました。
ただ、私の最初のコードでは、論理も文法も間違っていないのに、どうしてうまく動作しないのか、 不思議でなりません。 急ぎませんので、そのあたりのことが分かりましたら、又教えて下さい。
心から御礼申し上げます。(masabou5)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.