[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスが空白だったらメッセージ』(よ)
ユーザーフォーム内のテキストボックスが空白だったらメッセージ。
いつもお世話になっております。また教えていただきたいことがありますので、よろしくお願いします。
ユーザーフォームを使用して表を作成することにしたのですが、ユーザーフォームにある項目はすべて必須項目なので、未入力個所があった場合メッセージを出したいと思っています。
安易に考えて、
If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Then
MsgBox "未入力箇所があります。"
Else
処理内容
と言った感じにしてみたのですが、これだと再度入力し直した時もメッセージがでます。この方法だともう一度入力し直すところへ戻れない(うまく説明きませんが・・)ので、間違っていることはわかるのですが、ではどうしたら良いかのというとさっぱり思いつきません。どなたかアドバイスをいただけたらと思います。よろしくお願い致します。
こんばんわ。 TextBox1.Text="" Or TextBox2.Text="" と言った案配に書き換えてみておくんなはれ それでいけるとおもいまっせぇ。 ほな...(おいぼれ 弥太郎)
これ.Textを追加すればいいとか、そういう問題ではないのでは?
そのIfのコードは何のイベントで実行してるの? たとえばTextBoxに入力後、CommandButtonを押すとIfでチェックして、 表の方に入力するとかでいいのでは?
(ramrun)
おはようございます。 >これ.Textを追加すればいいとか、そういう問題ではないのでは? Oh yes その通りですわ。 (よ)サンのコードをそのまま活かすとすれば
If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Then GoTo kanemoto Else 内容処理 End If Exit Sub
kanemoto: MsgBox "未入力セル" If TextBox1 = "" Then TextBox1.SetFocus End If If TextBox2 = "" Then TextBox2.SetFocus End If If TextBox3 = "" Then TextBox3.SetFocus End If If TextBox4 = "" Then TextBox4.SetFocus End If
End Sub
っちゅう案配に書き換えてみておくんなはれ。お望み通りになると思いまっせぇ。 ただ、他にもエラーを組み込んどきたいもんがおますわなぁ。例えば数値を入力したい のに誤って文字列で処理してしもてそのままシートに転送してしまうとか...。 その愚を避けるためにも一括したエラー処理をkanemotoさんに処理して貰う様に組んだ 方が(フォームを初期状態に戻して再入力を待つ)ベターやと思いまんねんけど、どうで っしゃろか。第一TextBoxのいずれかが空のままCommandButtonが押されるっちゅう事は 入力する順番(TextBox2に入力されるべきモンがTextBox3に入力される)が狂うとる事 も大いに有るわけですさかいなぁ。 まぁ、まぁ、それは余談として、又お分かりになりまへんでしたらご一報おくんなはれ ほな...(おいぼれ弥太郎)
とりあえず.Textを試してみたのですが、やはりうまくいきませんでしたので、(おいぼれ弥太郎)さんのコードを参考にさせていただいて、何とかやってみたいと思います。また、>例えば数値を入力したい のに誤って文字列で処理・・については、前に教えていただいたIMEModeの設定にて何とか規制しております。ありがとうございました!(よ)
今はCommandButton_Click()でやっています。今の状態だと、未入力箇所を再入力した後も、未入力ですとメッセージがでます。何か他におかしいところがあるのでしょうか?今1時間ほど悩んでおりましたがさっぱりわかりません。もうしばらく考えてみますが、もし何か解決法がありましたらアドバイスお願い致します。(よ)
どこが悪いのか検討つきませんが、Ifの条件は最初ので とくに間違っていないと思います。
CommandButton_Click()
If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Then MsgBox "未入力箇所があります。" Else 処理内容 表に出力 次のレコードへポインタを進める End IF
End Sub
実はユーザーフォーム上に作成しているTextBoxが1,2,3,4ではなく、 作り変えたりしているうちに1,3,4,5とかになっている〜 とかいうオチ。
(ramrun)お昼〜
ramrunさんフォローおおきに。 また、先だっては絶大なるカバーリング、抱きしめたい程(いや?)感謝しております
(よ)さん、まぁ、落ち着いて、落ち着いて。 ほんなら弥太郎流ユーザーフォームを仮に作ってみましたさかい、それ参考になさって みておくんなはれ。TextBox4個と、CommandButton2個とします。 これでマウスをさわらんでも全ての作業が可能ですわ。 入力が全て終了したらセットフォーカスがTextBox1に移っとる筈ですさかい、空で Enterキーを叩いたらCommandbutton2にフォーカスが移り、またEnterキーでフォームが とじます。 この通りせんでもよろしいから、必要なトコだけとりあげておくんなはれ。 今日は1日居りますさかい、又わからんことあったら呼び出してくだはれや。 (任せてんかの 弥太郎) '----------------- Private Sub CommandButton1_Click() Dim i As Integer If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = _ "" Or TextBox4.Text = "" Then GoTo kanemoto End If i = rowno Cells(i, 1) = TextBox1.Text Cells(i, 2) = TextBox2.Text Cells(i, 3) = TextBox3.Text Cells(i, 4) = TextBox4.Text crea CommandButton2.Enabled = True CommandButton1.Enabled = False Exit Sub kanemoto: MsgBox "入力がちゃいまっせ。" crea End Sub '--------------- Sub crea() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox1.SetFocus End Sub '---------------- Function rowno() As Integer Dim i As Integer Do i = i + 1 Loop While Cells(i, 1) <> "" rowno = i End Function '----------------- Private Sub CommandButton2_Click() Unload Me End Sub '-------------------- Private Sub TextBox1_Change() CommandButton1.Enabled = True CommandButton2.Enabled = False End Sub '---------------------- Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then If TextBox1.Text = "" Then CommandButton2.Enabled = True CommandButton2.SetFocus End If End If End Sub '--------------------- Private Sub UserForm_Initialize() CommandButton1.Enabled = False CommandButton2.Enabled = False End Sub
お二人の書いてくださったものを参考にさせていただき、がんばってみます。本当にありがとうございます。わたしもVBAを独学で始めて半年ですが、このサイトでたくさん勉強させてもらい、今では工数削減に貢献できるようになりました。(その割にいつも初歩的なことをお聞きしていますが。。)これからもいろいろと勉強させていただきます。余計なことを書きましたが、まずはお礼まで。(よ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.