ユーザーフォームのTextBox1に文字を入力し
そのイベントを使って印刷命令をだしています
例えば
Private Sub TextBox1_Change()
If TextBox1 = P Then
Range(C6:F8).Select
Selection.PrintOut Copies:=1, Collate:=True
End If
End Sub
として印刷した場合、印刷後はTextBox1にフォーカスが
ないので マウスなどでTextBox1をクリックして戻しています
Private Sub TextBox1_Change()
If TextBox1 = P Then
Range(C6:F8).Select
Selection.PrintOut Copies:=1, Collate:=True
TextBox1.SetFocus
End If
End Sub
としてもダメです
TextBox1にフォーカスを固定して入力しながら
印刷したいのですがお知恵をお貸し下さい
こんにちはmoe28さん
>TextBox1にフォーカスを固定して入力しながら
>印刷したいのですがお知恵をお貸し下さい
知恵を貸すのはかまわないですが、その前に「使用上の注意」は読まれましたか?
質問前に使用上の注意を読んでおくことは、このような掲示板でのルールです。
どうぞ、よろしくお願いします。
開発環境は必要な情報です。(VCの場合だけではありません)
さて、ご質問の件はVBでなく、EXCELのVBAに関してだと思われます。
EXCELのVBAも95,97,2000,XPでアプローチが異なります。
とりあえず、EXCEL97でしたら、
If TextBox1 = P Then
UserForm1.Hide
Range(C6:F8).Select
Selection.PrintOut Copies:=1, Collate:=True
Range(A1).Select
UserForm1.Show
End If
でうまくいくはずです。
失礼しました
環境は windows Me + Excel2000 です
残念ながらその方法では2度目にはイベントがきません
簡単のために全てのキーに反応するようにして
例えば
Private Sub TextBox1_Change()
UserForm1.Hide
Range(C6:F8).Select
Selection.PrintOut Copies:=1, Collate:=True
Range(A1).Select
UserForm1.Show
End Sub
としてテストした場合2度目以降のキーには反応しません?
またメモリも消費していくようです(ついにはエラーとなります)
こんにちはmoe28さん
>残念ながらその方法では2度目にはイベントがきません
そんなことはないといいたいところなんですが、こちらで確認したのが
EXCEL97なんでそこまではいえないですね。
確認したいのですが、MaxLengthを1に設定していませんか?
changeイベントはキー入力によって発生するのではなく、テキストの
内容が変化したときに発生するイベントです。
従って、テキストボックスの内容が変化(change)しなければいくら
キー入力してもイベントは発生しません。changeイベントだからです。
本当にキー入力でイベント発生させたい場合はchangeイベントではなく、
KeyPressイベントまたはKeyDownイベントを使うべきです。
>KeyPressイベントまたはKeyDownイベントを使うべきです
これではうまくいきました
しかしchangeイベントは
windows Xp + Excel2000 でも同じ現象がでます?
MaxLengthは初期設定0のままです
とりあえず changeイベントはさけるようにします
ありがとうございました