[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスが空白だったらメッセージ』(よ)
ユーザーフォーム内のテキストボックスが空白だったらメッセージ。
いつもお世話になっております。また教えていただきたいことがありますので、よろしくお願いします。
ユーザーフォームを使用して表を作成することにしたのですが、ユーザーフォームにある項目はすべて必須項目なので、未入力個所があった場合メッセージを出したいと思っています。
安易に考えて、
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.