電子書籍の厳選無料作品が豊富!

Textboxが20個あってこの中で1つでもTextboxにテキストが入力されていればOKで、もしすべてのTextboxが空白(何も入力されない時は)Textboxに文字を入力するようにエラーを出したいのですが、配列を使ってやろうとしたのですが、なかなかうまく出来ません。

他に何かよい方法はありますでしょうか?教えてください。
よろしくお願いします。

A 回答 (3件)

テキストボックス(任意の数)とコマンドボタンを1つだけ用意したフォームを作ってテストしてみました。


こんなのでどうでしょう?
VB5.0で作成しました。
コマンドボタンが押されるときに、テキストボックスの中身をチェックする仕組みになっています。

Option Explicit

Private Sub Command1_Click()
MsgBox "Good Job!"
End Sub

Private Sub Form_Load()
Dim i As Integer

For i = 0 To Text1.UBound
Text1(i).Text = ""
Next i

End Sub

Private Sub Text1_LostFocus(Index As Integer)
Dim i As Integer
Dim blnFlg As Boolean

If ActiveControl.Name = "Command1" Then
blnFlg = True
For i = 0 To Text1.UBound
If Text1(i).Text <> "" Then
blnFlg = False
Exit For
End If
Next i

If blnFlg Then
MsgBox "Input Error"
Text1(0).SetFocus
End If
End If
End Sub
    • good
    • 0
この回答へのお礼

こんにちは。早速ご回答ありがとうございました。

私が作ったコードでは、カウンタ内でフラグをたてているのに、
Exit For をしていませんでした。

修正して、動作確認しました。
これからもっともっと勉強していきたいと思います。

本当にありがとうございました。

お礼日時:2001/03/22 13:13

おはようございます。



蛇足ながら、なぜうまく行かなかったのかを
下のKai_PGさんのコードを例に考えてみます。

ポイントは判定ループ内ですが、
> For i = 0 To Text1.UBound
>  If Text1(i).Text <> "" Then
>   blnFlg = False
>   Exit For
>  End If
> Next i

(1)判定フラグをTrueで初期化しなかった。
 (blnFlg = True)
 これをやらないと、トラップできませんね。

(2)判定のIf文にElseをつけて blnFlg = False とやって、
 Exit For をしていなかった。
 せっかく入力済みのテキストボックスを見つけても、
 次に空白があるとフラグが真になってしまいます。

すでにお分かりかと思いますが、丸写しではなく、
是非oohchanさんがお書きになったコードと比較されて、
どこが悪かったのかをお考えになって、
そのコードを修正するようにしてみましょう。

oohchanさんのスキルアップの少しでもお役に立てたら幸いです。
    • good
    • 0
この回答へのお礼

こんにちは。早速ご回答をありがとうございました。

私が作ったコードでは
(2)でご指摘いただいた通り、Exit Forをしていませんでした。

修正して、動作確認できました。
本当にありがとうございました。これからどんどん勉強していきたいと
思います。

お礼日時:2001/03/22 13:07

配列をどのように使おうとされたのでしょうか? どこでどう使っているかによってアドバイスが変わってきますので、お願いします。


たとえば、不明だと思われる点ですが、「テキストの入力チェックのタイミング」です。どのタイミングでチェックしたいのでしょうか? コマンドボタンを押したときでしょうか? テキストボックスからフォーカスが移動した瞬間でしょうか?
補足をお願いいたします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!