アプリ版:「スタンプのみでお礼する」機能のリリースについて

いろいろ調べましたが、解決方法が分からず、お訊ねします。

1つのworkbook内で ①修了者名簿と②修了証書のsheetを作り、名簿の番号を指定して修了証書を印刷させるVBAを作ろうとしています。

sheet①修了者名簿上に Activeコントロールで「修了証書印刷」を作成し、クリックすると
UserForm「印刷設定」(印刷番号を入力させるフォーム)を表示するところまではできましたが
テキストボックスに印刷番号を入力するとオブジェクトエラーが表示され印刷されません。
どのように修正したら良いか、アドバイスを頂けたら助かります。

以下がVBAの内容ですが実行すると「424/オブジェクトが必要です」と表示され、
デバックすると a=TB1.Valueの箇所が黄色反転になっていました。
(なお、sheet②は セルV2の値を参照する関数が予め入力されています。)

Sub 印刷設定()
Worksheets("修了証書").Activate
Range("V2").Value = i

For i = a to n
a = TB1.Value
n = TB2.Value

Worksheets("修了証書").PrintOut

next i

End Sub

以上です。 よろしくお願いします。

A 回答 (2件)

「Sub 印刷設定()」


は、どこにありますか?
そして、どのタイミングで起動しているのでしょうか?


「TB1」は、UserForm「印刷設定」のテキストボックスの名前だと思いますが、UserFormのコードではないと思います。そのため参照できないのではないですか。
「印刷設定」が名前ならば、
印刷設定.TB1.value
と、オブジェクトを指定しないと探しきれません。
※TB2も同様です。UserFormの名前が違うのでしたら、適当に修正してください。


No.1さんの回答にもありますが、

a = TB1.Value
n = TB2.Value
For i = a to n

の順番でしょう。

それと
for...
Worksheets("修了証書").PrintOut
next
ですと、「その回数だけ」内容を変更せずに「Worksheets("修了証書")」を印刷するだけですが、それでよろしいのでしょうか。

「差し込み印刷」ということは「修了証書」に書き込む「氏名」などを変更したいのではないですか?
必要であれば、.PrintOut のまえにもう一工夫必要だと思います。
    • good
    • 1
この回答へのお礼

Zincerさん、丁寧なアドバイスをありがとうございます。
no.1さんのアドバイスも合わせて考え直してみて、次のように修正してみたのですが、今度は「コンパイルエラー メソッドまたはデータメンバーが見つかりません」と出てきます。

すみませんが、もう1度アドバイスして頂けませんでしょうか?
なお、”修了証書”の「名前」「生年月日」等のセルにVLOOK関数を入力していて、V2セルに個人番号を入力して印刷させれば大丈夫かなぁ、と思うのですが、、
Sub 印刷設定()
Dim i As Integer
a=入力画面.TextBox1.Value ←「コンパイルエラー メソッド~」
n=入力画面.TextBox2.Value
For i = a To n

Worksheets(”修了証書”).Range(”V2”).Value = i
Worksheets(”修了証書”).PrintOut

Next i

End Sub

どうぞ よろしくお願いします。 <(_ _)>

お礼日時:2017/11/10 12:52

多分どこかで「TB1」が定義されているんでしょうけど、そこを通っていないのでは?


なお、「For」「next」内部で初期値と終了値を変化させてしまうのは問題が有ると思いますが…
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます!
(質問後、直ぐに頂けて超嬉しかったです)
ただ初心者レベルなので、意味がよく分からずにレスできず、すみませんでした。

お礼日時:2017/11/10 12:04

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