- ベストアンサー
vbaで同じテキストボックスを繰り返し使いたい
エクセル2003 VBAでデータ入力フォームを作成中です。 データ2種類あり、2つのtextbox(t1 , t2)作りました。 t1のデータ入力後はEnterKeyでExitして private SUB t1.exit(ByVal Cancel As MSForms.ReturnBoolean) でエクセルのセル内への所定の場所に書き込みを実行しています。 ところが次にfocus(tabというのか)が移動する t2では 繰り返しデータを入力したいのです。ですからt1と同じようにしたのではEnterでt1にfocusが逃げてしまいます。データは2桁の数字です。Enterで確定してさらに繰り返しt2内でデータを入れ、0を入力しEnterしたときに初めてt1に移らせたいのです。EnterKeyBehaviorをtrueにするのか また private SUB t2.Exit(ByVal Cancel As MSForms.ReturnBoolean) で記述していいのかわかりません。教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17068)
関連するQ&A
- テキストボックス内の簡単な計算
はじめまして、よろしくお願いいたします。 エクセル(2003)のマクロで質問です。 いくつか複数のテキストボックスが配置されています。 加算など簡単な計算をテキストボックス内で計算させていおいて、 最終的にボタンで、それら各々のテキストボックスに対応させた エクセルのシートのセルに代入させようとしています。 さて、テキストボックス内で簡単な計算をさせるため、 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox1.Text = Evaluate(TextBox1.Text) End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox2.Text = Evaluate(TextBox2.Text) End Sub Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox3.Text = Evaluate(TextBox3.Text) End Sub … とさせましたが、 何も入力がないテキストボックスは そのままなにもしなくていいよ、とさせたいですのですが、 上記のままだと、何もない(値が入力されていない) テキストボックスに到達すると 止まります。 何も入力がないテキストボックスは 何もしなくていいよ、は どうしたらよいでしょうか? 誠に不勉強で恐縮ですが ご教授願います。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA フォームコード簡素化
EXCEL VBAのフォームにテキストボックスを複数作成しております。 下記のように複数のテキストボックスで同じ処理を行うのですが コントロール→ループか何かで簡素化できないでしょうか? Private Sub TextBox17_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox17.Value = Format(TextBox17.Value, "0.00") End Sub Private Sub TextBox18_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox18.Value = Format(TextBox18.Value, "0.00") End Sub Private Sub TextBox19_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox19.Value = Format(TextBox19.Value, "0.00") End Sub Private Sub TextBox20_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox20.Value = Format(TextBox20.Value, "0.00") End Sub Private Sub TextBox21_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox21.Value = Format(TextBox21.Value, "0.00") End Sub Private Sub TextBox22_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox22.Value = Format(TextBox22.Value, "0.00") End Sub 以上お力添えお願いいたします。
- 締切済み
- Excel(エクセル)
- エクセルVBA 時刻の計算 テキストボックス
お知恵をお貸しください。 入力を簡単にするためのユーザーフォームを作っています。 開始時間(txt開始)に「14:00」 終了時間(txt終了)に「19:00」と入力すると 時間(txt時間)は「5:00」(19:00-14:00=5:00) 通常(8:00~18..00)に「4」(4:00*24) 時間外(6:00~8:00、18:00~22:00)に「1」(1:00*24) 深夜(22:00~6:00) と表示させたく思います。 通常、時間外、深夜のテキストボックスに表示することができません。 よろしくお願いします。 Private Sub txt時間_Exit(ByVal Cancel As MSForms.ReturnBoolean) If txt開始 > TimeValue("8:00") And txt開始 < TimeValue("18:00") Then txt通常.Text = TimeValue(txt時間.Value) * 24 End If End Sub Private Sub txt終了_Exit(ByVal Cancel As MSForms.ReturnBoolean) txt時間.Value = Format((TimeValue(txt終了.Text) - TimeValue(txt開始.Text)), "h:mm") End Sub
- 締切済み
- オフィス系ソフト
- エクセルVBAについて質問です。
エクセルVBAについて質問です。 ユーザーフォームのテキストボックスに数字以外を入力するとエラーメッセージが出るように関数を作ったのですが、 Private Function AA(objtextbox As MSForms.TextBox) As Boolean Dim A As String AA = False A = Trim(objtextbox.Text) If objtextbox.Text <> "" Then If IsNumeric(A) = False Then MsgBox "数値 Error", vbCritical With objtextbox .SetFocus .SelStart = 0 .SelLength = Len(.Value) End With AA = True End If End If End Function Private Sub textbox1_exit(ByVal cancel As MSForms.ReturnBoolean) cancel = AA(TextBox1) End Sub テキストボックス200近くある場合、1つ1つに Private Sub textbox1_exit(ByVal cancel As MSForms.ReturnBoolean) cancel = AA(TextBox1) End Sub と作っていかなくてはいけないのでしょうか? プロシージャ名に変数使おうとしたら上手くできませんでした。 どなたか助けてください。
- 締切済み
- Visual Basic
- VBAのExitイベントについて
VBA(Excel)についてご質問します。 フォームにて、IDというオブジェクト名のテキストボックス、 Private Sub ID_Exit(ByVal Cancel As MSForms.ReturnBoolean) という関数(Exitイベント)を用意しました。 IDにフォーカスがある状態で、フォーカスを移動しようとすると、この関数が必ず実行されるかと思います。 そのとき、特定のボタン(例えばキャンセルボタン)がクリックされたためにフォーカスが移動したときは、この関数の処理を実行したくない。もしくはこの関数内で特定のボタンがクリックされたこと(そのためにフォーカスが移動したこと)を検出して、処理をスキップしたいです。 どうすれば実現できますでしょうか? よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- エクセルVBAのテキストボック、Exitイベント
エクセルのVBAで簡単なデータ登録のマクロを作成しています。 フォームのテキストボックスに入力した値を、エクセルシートに展開する程度の機能です。 製品コードを必須にしており、製品コードが入っていない時はエラーメッセージを表示します。 製品コードが入力されていないときは、製品コードのテキストボックスにフォーカスがあたったままにしたく、ネットで調べてExitイベントに以下の処理を作成しました。 Private Sub mySeiCD_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim myMsgBoxValue As String If Len(mySeiCD.Value) = 0 Then myMsgBoxValue = MsgBox("製品コードは入力必須です。" ,vbOKOnly, "製品コード未入力") Cancel = True End If End Sub 製品コード未入力の際にフォーカスはそのままになりましたが、フォームを閉じることができなくなりました。 閉じるボタンを押しても、Exitイベントにひっかかてしまいます。 当然の動きと思いますが、回避する方法はありませんでしょうか? Exitイベントを使わずに、SetFocus を使った場合は、どうしても、次のテキストボックスにフォーカスが移動してしまいました。 以上、長くなりましたが、よろしくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- Excel VBAでフォーカスを移動しない方法
Excel VBA リストのソースを設定してあるコンボボックスから次のコンボボックスに移動する際、入力にエラーあれば フォーカスを移動しないようにするコードはどのようにすればいいのですか? 現在は Private Sub [コンボボックス名1]_Exit(ByVal Cancel As MSForms.ReturnBoolean) If [コンボボックス名2] = "" Then MsgBox "値が不正です。", vbInformation, "フォーム名" End If End Sub としています。
- ベストアンサー
- オフィス系ソフト
- エクセルマクロのテキストボックスを選択したい
こんばんわ! エクセルマクロのユーザーフォームのテキストボックスを選択したままにしたいのですが、どうしたらよいでしょうか? 具体的には テキストボックスに値を打ち込みテキストボックスから移動すると確定?するようにしています。(下のプログラム) Private Sub textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) msgbox "aaa",vbinformation endsub これが動作した後、またtextbox1を選択状態にしたいです。 アドバイスの程よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- ByVal Cancel As MSForms.R
(ByVal Cancel As MSForms.ReturnBoolean)の意味を教えてください。 エクセルのユーザーフォームで、 クリックした場合は、フォームモジュールに Private Sub UserForm_Click() End Sub のひな形が出来て、 ダブルクリックした時は Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) End Sub が出来上がります。 なぜ、DblClickの時はカッコの中に色々入るのでしょうか? それにByValは値渡しの時に使う言葉ですよね? DblClickの時は、何かの値を渡しているのですか?
- ベストアンサー
- Visual Basic
- ユーザーフォームのSetFocusが働かない?
エクセルのユーザーフォームにtextboxが2つとCommandButtonが2つ配置しています。 textbox1に入力されるのを10以下に限定するため、それ以上の数字が入力されるとExit時にエラーを表示し、textbox1にフォーカスを戻したいのです。 ですが、以下のようにするとエラー時にはtextbox2も飛ばしてCommandButton1にフォーカスされます。 どのようにするのが正解なのでしょうか。 よろしくお願いします。 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If CInt(TextBox1.Text) > 10 Then MsgBox ("ダメ") TextBox1.SetFocus End If End Sub
- ベストアンサー
- その他(プログラミング・開発)
- Windows11を22H2にアップデート後、Brother Utilitiesをインストールしなおしたのですが、Acrobatなどからスキャナーが見つかりません
- お使いの環境はWindows11 22H2で、スキャナーを有線LANで接続しています。
- 関連するソフトとしてはAcrobatを使用しています。
お礼
明快な回答ありがとうございました。 無事 思い通りの ものができました。 ありがとうございました。