これ何て呼びますか Part2

宜しくお願い致します。
エクセルのマクロのフォーム上にtextbox1~textbox10を作成してあります。
これら全てがきちんと入力されているかどうかを調べる命令を書きたいと思っております。
どのようにすればよろしいのでしょうか?

【エラー表示される私の考え】
For i = 1 To 10
If TextBox("& i & ").Value = "" Then
MsgBox ("データを再度入力してください。")
Exit Sub
End If
Next i

if文のところでエラーが出ます。textboxの表示方法がまずいと思うのですが、どうすればよいのかわかりません。ご指導の程宜しくお願い致します。

なお、For~Next文を使わない方法でも構いません。

A 回答 (2件)

こんにちは。



Excelの場合コントロール配列は使えません。

TextBoxがTextBox1~TextBox10という名前であれば

Dim i As Integer
For i = 1 To 10
If Me.Controls("TextBox" & i).Value = "" Then
MsgBox ("データを再度入力してください。")
Exit Sub
End If
Next

TextBoxの名前を変更している場合は

Dim myctrl As Control
For Each myctrl In Controls
If TypeName(myctrl) = "TextBox" And myctrl.Value = "" Then
MsgBox ("データを再度入力してください。")
Exit Sub
End If
Next

でどうでしょうか。
    • good
    • 7
この回答へのお礼

M-SOFT様
できました!
ありがとうございました。

お礼日時:2006/06/29 16:07

お世話になります。



こんな感じでしょうか。
Private Sub CommandButton1_Click()
  Dim i As Integer
  
  For i = 1 To 5
    Dim tBoxName As String
    tBoxName = "TextBox" & CStr(i)
    If ActiveSheet.OLEObjects(tBoxName).Object.Value = "" Then
      MsgBox (tBoxName & "を入力してください")
      Exit For
    End If
  Next i
End Sub
    • good
    • 1
この回答へのお礼

naganaga_001様
早速御回答いただきありがとうございます。
試してみたのですが・・・・
If ActiveSheet.OLEObjects(tBoxName).Object.Value = "" Then
の部分でエラーが出てしまいました。
フォーム上のデータの入力の有無を確認するものなので、たぶん、ActiveSheetの部分を変えなければならないと思うのですが、どうもわかりません。
OLEObjectsのところも変えないといけないのかもしれません・・・。
誠に恐縮ではございますが、再度、御教示お願い致します。

お礼日時:2006/06/29 16:03

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A