• ベストアンサー

TextBoxの場合だけ処理したい

VB2005でフォームの中のテキストボックスの中身をすべて""(空白文字列)にしたいと思っています。 VB6の時には、以下のコードでテキストボックスの中身を""にしていたのですが、VB2005になってから、captionプロパティがなくなって、この方法ではラベルやボタンまで""になってしまいます。 Dim TextBoxControl As Control On Error Resume Next For Each TextBoxControl In Me.Controls TextBoxControl.Text = "" Next 要するにこのコードの中にifでTextBoxの場合のみ処理するように書けばいいと思うのですが、その方法が見つかりません。if ~ thenの間に書く式を教えていただきたいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • KG_
  • ベストアンサー率62% (34/54)
回答No.2

If TextBoxControl.GetType Is GetType(TextBox) Then   TextBoxControl.Text="" EndIf みたいな感じで出来ませんかね。検証してなくて申し訳有りませんが ;/

xiaolong_goo
質問者

お礼

できました。ありがとうございます。

その他の回答 (2)

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.3

TextBoxのNameには必ずTextBox~~~と名前をつけて、 TextBoxControl.Name.SubString(0,7)="TextBox" でどうでしょうか?という事ですが・・・

xiaolong_goo
質問者

補足

わかりました。 すべてのテキストボックスコントロール名のお尻に"TextBox"をつけてそれを検出してということですね。ありがとうございました。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

.Captionの変わりは.Nameで補えませんか?

xiaolong_goo
質問者

補足

Nameプロパティですか? 良くわかりません・・・

関連するQ&A

  • フォーム上のすべてのTextBoxを空にしたい

    現在適用中のコード:(VB2008) Dim objtextbox As Control For Each objtextbox In Me.Controls objtextbox.Text = "" Next 問題: 1、VB6と違い、Captionプロパティがなくなったため、TextBox以外のTextプロパティも空になってしまうので、コントロールがTextBoxのときだけ処理したい。 2、上記のコードだと、フォーム上にあるグループボックスの中は適用されない。In Me.controles 一発ですべてのグループボックスの中のTextプロパティまで処理したい。 3、そんなのは無理という場合、すべてのコントロールをフォームがロードされた状態にしたい。(できれば、CloseしてShowするのは避けたい) いろいろ試してみましたが、うまくコードがかけません。ご迷惑をおかけいたしますが、皆様の知恵をお貸しください。

  • VBA 同様処理の簡素化?

    エクセル VBAで下記のようにテキストボックスの処理を 書き込みました。 Private Sub TextBox24_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) '注文合計数 Sukei = O If KeyCode = 13 Then For Kasan = 18 To 34 Soukei = Val(Controls("TextBox" & Kasan).Text) Sukei = Sukei + Soukei Next Kasan Label41.Caption = Sukei '見込合計数 MSukei = O For MKasan = 35 To 51 MSoukei = Val(Controls("TextBox" & MKasan).Text) MSukei = MSukei + MSoukei Next MKasan Label42.Caption = MSukei '総合計数 Label39.Caption = Val(Label41.Caption) + Val(Label42.Caption) End If End Sub Private Sub TextBox25_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) '注文合計数 Sukei = O If KeyCode = 13 Then For Kasan = 18 To 34 Soukei = Val(Controls("TextBox" & Kasan).Text) Sukei = Sukei + Soukei Next Kasan Label41.Caption = Sukei '見込合計数 MSukei = O For MKasan = 35 To 51 MSoukei = Val(Controls("TextBox" & MKasan).Text) MSukei = MSukei + MSoukei Next MKasan Label42.Caption = MSukei '総合計数 Label39.Caption = Val(Label41.Caption) + Val(Label42.Caption) End If End Sub テキストボックス24、25内の処理は同じなのですが テキストボックスが増えた場合、修正することも考えて 簡素化したいのですが、どのように行なえばいいでしょうか?

  • VBAでコントロール配列を持つことは可能ですか?

    Excel2002、OSはXPです。 VBではコントロールに配列を持つことが出来ましたが、 VBAでコントロール配列を持つことは可能でしょうか? やりたいことはユーザーフォームにラベルを100個ぐらい貼り付けて、 テキストボックス入力した値がCell(i,1)と等しければ、 i番目のラベルのCaptionに文字を入力したい。という感じです。 もしVBのようにコントロール配列を持てれば、 If TextBox1.text=Cells(i,1) Then Label(i).Caption="~~" という風に出来るのですが、どうも配列の設定がVBのようにできません。 プロパティにINDEXが無いですし、オブジェクト名を同じにしたら エラーとなってしまいますし。。 もし出来ないのであれば、何か回避策のようなものはないでしょうか? 力技で100個IFを書けば出来ることは出来るのですが・・ If TextBox1.text=Cells(i,1) Then If i = 1 Then Label1.Caption="~~" ElseIf i=2 then Label2.Caption="~~" ・・・・

  • 複数のtextboxの処理を一括で行えませんか?

    初めてVBでプログラムを組んでいるのでいます. そこで,複数のtextboxがある場合,一つ一つに番号が付いているため, 同じ処理を各textbox毎に書いています. 例) if textbox1.text = "" then textbox1.text = 0 endif if textbox2.text = "" then textbox2.text = 0 endif data(0) = textbox1.text data(1) = textbox2.text …… とやっています.今textboxが40個とかあるので, すごく大変です. もっと簡単な方法はありませんでしょうか? 教えてください...

  • textbox.textやlabel.captionの型変換について

    VB6.0を使用しています。 テキストボックスやラベルに値として数字を入れているのですが、これらの値に数字で加算減算する場合・・・ ●宣言部でintegerを宣言する又は、 ●string型で宣言してからプロシージャ内でCint(textbox.text)やCint(label.caption)のように変換するのとどう違うのでしょうか?

  • 複数コントロールテキストの同一セルへの入力

    はじめまして。 エクセルVBAについて質問させて頂きます。 ユーザーフォームにラベル・テキストボックスそれぞれ1~6があって ラベルのキャプションとテキストボックスのテキストをセル同一セルに 入力したくて With UserForm1 Range("A1") = .Label1.Caption & .TextBox1.Text & .Label2.Caption & .TextBox2.Text _ & .Label3.Caption & .TextBox3.Text & .Label4.Caption & .TextBox4.Text _ & .Label5.Caption & .TextBox5.Text & .Label6.Caption & .TextBox6.Text End With と、このように記述したのでが、これをもっと簡潔に書く方法はございませんでしょうか? ご教授よろしくお願いします。

  • コントロール配列と同じような扱い方

    TextBox1、TextBox2、TextBox3・・・・TextBox10 と10個のテキストボックスにVB6で使っていたコントロール配列と同じような処理の仕方をコードで教えていただけませんか。 for i=0 to 9 TextBox(i).Text=i next i 上記のコードをVB.NETで書くとすれば、どのように書けばいいかということさえわかれば、なんとか頑張れる気がします。

  • ページに乗っているコントロールの一覧を取得するコー

    タブコントロールのページに乗っているコントロールの一覧を取得するコードを教えてください。 あくせすです。 1ページ目には、コマンドボタン、テキストボックスが乗っています。 それを取得したいです。 2ページ目には違うコントロールが乗っています。 2ページ目のコントロールは取得したくないです。 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200911/09110001.txt を参考に、 Sub test() For Each tabctl As TabPage In TabControl1.TabPages For Each ctl As Object In tabctl.Controls If ctl.Name.toString.IndexOf("TextBox") > -1 Then Dim tb As TextBox tb = DirectCast(ctl, TextBox) End If Next Next End Sub にしましたが構文エラーになってしまいました。 VB.NETのコードだからですよね。 VBAのコードをご教授いただけますか。よろしくお願いします。

  • web上のTextBoxに値を代入したい

    asp.netとVBでwebプログラムを作成しています。 web上にTextbox1~Textbox10を置いて、それぞれに1,2,3,4・・・・10を代入したい場合 Textbox1.text = 1 Textbox2.text = 2 ・ ・ Textbox10.text = 10 と書けば、それぞれに数字が代入され表示されますが、 For i = 1 to 10 Me.controls("Textbox" & cstr(i)).text = i Next と言うような書き方でコンパクトにまとめることは可能なんでしょうか? ちなみに、上記の記述をすると、「.textはSystem.Web.UI.Controlのメンバーでない」旨の エラーになります。 どなたかご教示お願いします。

  • 配列化

    VB2005においてlabel,textboxといったコントロールを配列化したいのですがどうすればいいでしょうか? VB6では下記のコードが成り立ちますが・・・ For i=0 to 3 label(i).caption = str(i) Next このようにコントロール自体を配列化することは出来るのでしょうか?