エクセルVBAでユーザーフォーム内に配置されたテキストボックス
への数値の入力時に、指定範囲内になければメッセージボックスで
規格外であることを警告し、その規格外が入力されたテキストボックス
を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが
どうすればよいのでしょうか?
自分で考えた構文です。
Private Sub TextBox1_AfterUpdate()
Dim A As Single
A = TextBox1.Text
If A < 1.99 Or A > 3.00 Then
MsgBox "規格外!!"
TextBox1.Text = ""
TextBox1.SetFoucus
End If
Exit Sub
End Sub
これですと、次のテキストボックスにフォーカスが移動してしまいます。
次のテキストボックスにフォーカスを移動させずに、規格内の値が
入力されるまでフォーカスを移動させない方法を教えて下さい。
お願い致します。
No.3ベストアンサー
- 回答日時:
こんにちは。
Wendy02です。>イベントをAfterUpdateにしましたが、Wendy02さんはExitを使っていますが、AfterUpdateではなぜ正しく動作しないのでしょうか?
イベント自体の問題よりも、イベントの機能を良くみたほうがよいですね。
_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ここで、Return(戻り値)のブーリアン値があるようなので、それを利用しただけです。
>Cancel = True
が、フォーカスの移動をキャンセルしています。
別に、Exit でなくても良いのです。例えば、
_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
のKeyCode に入った 「13(Enter)」のコードを 0 で打ち消す方法でも、可能です。
If が True の時に、
MsgBox "規格外!!",16
TextBox1.Text = ""
KeyCode = 0
でも可能です。
「なぜ?」というよりも、そういうパターンがあるということです。たぶん、AfterUpDateでも、方法によってはできるとは思いますが、かなり難しくなるのではないかなって思うだけです。
No.2
- 回答日時:
こんばんは。
イベントはその持つ意味を考えて使わなければ意図しない動作をしますので使う前にヘルプをよく読んで使うことをお薦めします。
とは言ってもVBA使い始めのうちはなかなかですよね。
ひとつ質問します。
TextBox1にフォーカスがある時にEnterのみ押した場合、言い替えると未入力の場合はメッセージを出さなくていいのですか?
この回答への補足
ご回答ありがとうございます。
質問ですが、未入力の場合は最終的な段階でチェックする
ようにしています。
今回の問題は、テキストボックス入力直後に範囲内なのか
すぐに判断し、もしそうでなければ強制的に空欄にし
フォーカスを戻したいと思っております。
宜しくお願い致します。
No.1
- 回答日時:
こんばんは。
以下の
CreateObject("WScript.Shell").Popup
は、
MsgBox でもよいです。MsgBox がうっとうしく感じたので、換えてみました。
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim myValue As Single
If IsNumeric(TextBox1.Text) Then
myValue = CSng(TextBox1.Text)
If myValue < 1.99 Or myValue > 3# Then
CreateObject("WScript.Shell").Popup "規格外!!" & vbCrLf & _
"範囲: 1.99 ~3.0", 1, "規格外エラー"
TextBox1.Text = ""
Cancel = True
End If
End If
End Sub
この回答への補足
早速のご回答ありがとうございます。
イベントをAfterUpdateにしましたが、
Wendy02さんはExitを使っていますが、
AfterUpdateではなぜ正しく動作しないの
でしょうか?
申し訳ありませんが、イベントの内容の意味を詳しく
教えて頂けないでしょうか?
お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2023/01/27 09:05
- Visual Basic(VBA) ユーザーフォームで銀行に対応した支店コードの入力ができません Sheet1のA列に銀行名、B列に銀行 5 2022/07/28 17:50
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Access(アクセス) Access の SetFocus について教えてください 5 2022/08/04 07:32
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
コマンドボタンのEnterイベント後に、フォーカスを移動したい。
その他(Microsoft Office)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
6
Excel VBAでフォーカスを移動しない方法の続き
Excel(エクセル)
-
7
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
8
テキストボックスのフォーカスの判定
Visual Basic(VBA)
-
9
テキストボックス入力後、警告メッセージを表示し、フォーカスを移動させない方法について
Access(アクセス)
-
10
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
11
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
12
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
13
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
14
VBAのExitイベントについて
その他(プログラミング・Web制作)
-
15
エクセルVBAのテキストボック、Exitイベント
その他(プログラミング・Web制作)
-
16
ユーザフォーム AfterUpdate処理について
Visual Basic(VBA)
-
17
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
18
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
19
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
20
「Cancel = True」とはどういう意味でし
Word(ワード)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どこにもフォーカスを当てたくない
-
C# ReadOnlyのTextBoxで
-
油性マジックで書いたサインを...
-
Accessの更新後処理で特定の条...
-
フォーカスを移動させない方法
-
テキストボックス入力後、警告...
-
他の人には声だして挨拶してる...
-
酸素ボンベのレギュレーターか...
-
ユーザーフォームのSetFocusが...
-
『エッジの効いた○○』の意味。
-
VBAのExitイベントについて
-
VC++2010のラジオボタンの選択...
-
DateTimePicker のEnable
-
矢印(左右)キーでイベントを...
-
VB.NET ボタン押下で一つ前の...
-
フォーカスを奪わない
-
大きめなインパクトのあるフラ...
-
コマンドボタンのEnterイベント...
-
マイクラのマルチサーバーが起...
-
SetFocusについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
他の人には声だして挨拶してる...
-
どこにもフォーカスを当てたくない
-
C# ReadOnlyのTextBoxで
-
矢印(左右)キーでイベントを...
-
ユーザーフォームのSetFocusが...
-
エクセルVBA テキストボックス...
-
業務に差し支えのないテンキー...
-
コマンドボタンのEnterイベント...
-
GridViewでハイライトを使用し...
-
テキストボックス入力後、警告...
-
油性マジックで書いたサインを...
-
Accessの更新後処理で特定の条...
-
VBAのExitイベントについて
-
中古本の店名ハンコの消し方
-
F503iにSVって表示されてるんで...
-
OPPO A54 5Gを使っています。 ...
-
VC++2010のラジオボタンの選択...
-
VB.NET ボタン押下で一つ前の...
-
油性マジックの消し方
-
炊飯器のセットの音と出来上が...
おすすめ情報