プロが教えるわが家の防犯対策術!

テキストボックスが4つありそれぞれ空を検知したく
下記のようなプログラムを書きました
Dim i As Integer

For i = 1 To 4
If TextBox(i).Text = "" Then
'入力チェック空
MessageBox.Show(i & ":空です!")
End If

Next

TextBox(i)ここがうまく書けません。エラーになります。
どう書けばいいのでしょうか?

そもそも.netで書けるのかどうか。

よろしくお願いします。

A 回答 (4件)

No.3です。



>Dim tb() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4}
>なんでこれでうごくのか。。

簡単に言えばNo.2さんが行なっている『配列変数の宣言』と『配列への代入』を同時にしているだけですね。

他にLinqとかあるんですが、余計ややこしくなりそうで回答しませんでした。
    • good
    • 0
この回答へのお礼

そんなこと同時にできるんですね。
ありがとうございます。
Linqは知らないのでまた今度にします。

お礼日時:2018/10/31 19:06

No.1です。



もうちょっと.NETぽい感じで書くなら

Dim tb() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4}

For i As Integer = 0 To 3 '配列にした際に最初のIndexは0のため0~3の4個となる
If tb(i).Text = "" Then
'入力チェック空
MessageBox.Show((i + 1) & ":空です!")
End If
Next

こんな方法とかもあるかな?

でも仮に複数が空白ならその都度メッセージが出るのは面倒かもですけどね。
    • good
    • 0
この回答へのお礼

Dim tb() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4}

なんでこれでうごくのか。。
呪文として覚えます。
度々ありがとうございます。

お礼日時:2018/10/31 15:24

古いVB6までなら、コントロール配列を使ってそういう書き方ができましたが、今では無理です。

ANo.1の方法を使うか、または以下のように自前のTextBoxを入れる配列を作って事前にそこに入れておく必要があります。

Dim ibox(4) As TextBox

ibox(0) = TextBox1
ibox(1) = TextBox2
ibox(2) = TextBox3
ibox(3) = TextBox4

For i = 1 To 4
If ibox(i).Text = "" Then

あとこれは直接回答ではないですが、今のコードだとエラーなく正常に動いたとしても、空です!って警告した後に再入力させる処理がありません。If文をWhile True ~ End Whileで囲んでおいて、OKならExit Whileで脱出するような書き方にしないとダメなんじゃないかと思ったりしました。
    • good
    • 0
この回答へのお礼

While True ~ End Whileで囲んでおいて、OKならExit While

そうですね。
ほんとうはそんな感じにしたかったのですが、
まず書きなれたForで描いてみました。

プログラム、ヒントともどもありがとうございました。

お礼日時:2018/10/31 15:22

うちのは古いから今のとは違うかもですが。



For i = 1 To 4
If CType(Me.Controls("TextBox" + i.ToString()), TextBox).Text = "" Then
'入力チェック空
MessageBox.Show(i & ":空です!")
End If
Next

こんな感じかな。(今のはもっと楽かもですが。)
    • good
    • 0
この回答へのお礼

このまま動きました。ありがとうございす。

でもVB6的な記述のほうが人間的にはわかりやすい!?

お礼日時:2018/10/31 15:23

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