VB.Netのテキストボックスのコントロール

このQ&Aのポイント
  • VB2010を使用しています。チェックボックスのon/offでテキストボックスの入力を制限しようとしています。
  • Cont.ReadOnly = Trueと書いても構文が違うのか認識しません?
  • 大量のテキストボックスがあるので一つ一つコードを書くのは面倒なので、ご教授お願いします。
回答を見る
  • ベストアンサー

VB.Netのテキストボックスのコントロール

VB2010を使用しています。チェックボックスのon/offでテキストボックスの入力を制限しようとしています。 If Check1.Checked = True Then For Each Cont As Control In Me.Groupko顧客数.Controls If Cont.Name Like "Text*" Then ここの記述ですが         『Cont.ReadOnly = True』と書いても構文が違うのか認識しません?? End If Next Else           逆のコードの予定 End If 大量のテキストボックスがあるので一つ一つコードを書くのは面倒なので ご教授お願いします。

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

  • ベストアンサー
  • x-1919
  • ベストアンサー率52% (91/173)
回答No.1

cont は Control 型なので TextBox 型にキャストしてやる必要がある。 CType(cont, TextBox).ReadOnly = True チェックボックスの on/off でトグル動作させるのなら以下のようにすれば ReadOnly = True と ReadOnly = False のコード ブロックを書かなくて済む。 CType(cont, TextBox).ReadOnly = CheckBox1.Checked GroupBox 内の全てのテキストボックスが対象なら以下のようにすることも可能。 For Each の対象を GroupBox1 内の TextBox に絞ってループさせる。 For Each cont As TextBox In Me.GroupBox1.Controls.OfType(Of TextBox)()   cont.ReadOnly = CheckBox1.Checked Next

Alshark
質問者

お礼

とても分かり易い回答、ありがとうございます。 なるほど、型が違ったんですか、独学でコーディングしているので数多のネットからのコピペでやっているので応用力が中々つきません(苦笑) これからも精進したいと思います。

関連するQ&A

  • テキストボックスかコンボボックスを条件としたい

    フォーム上のコントロールを取得する時に、 「テキストボックスかコンボボックスなら」としたいのですが、VBAコードがわかりません。 ************************************************************ Sub Sample() Dim myCtrl As Control Dim myForm As String myForm = "フォーム1" For Each myCtrl In Forms(myForm).Controls If myCtrlのタイプがテキストボックス Or コンボボックス Then Debug.Print myCtrl.Name End If Next End Sub ************************************************************ に修正していただけますか? ControlType プロパティを使うと思うのですが、使い方がわかりません。 ご回答よろしくお願いします。

  • Accessのコントロールの数え方

    Access 2003のコントロールについてお教えください。 フォーム1というフォームにチェックボックスがいくつも配置されています。 チェックボックスがいくつ配置されているか知る方法はあるのでしょうか? また、いくつのチェックボックスにチェックが入っているか知る方法はあるでしょうか? ネットで検索したところ、下記のコードが約にたつような気がするのですが、どうやって活用すればよいのかがわかりません・・・・ For Each ctl In Me.Controls With ctl If .ControlType = acTextBox Then 'コントロールの種類がテキストボックスなら値をNull(空)に設定 .Value = Null End If End With Next ctl わかりでしたらお教えください。よろしくお願いします。

  • Accessでのテキストボックスのv記載方法

    Accessでのvbaを使用したコードの書き方について教えて欲しいです。 vbaを使用したますたメンテナンス(データ管理)のコードをAccessで組んでいるのですがで組んでいるのですがどうも上手くいかないところが多いです。 1. コードという名前のテキストボックス(プロパティ→すべて→名前でつけた名前を使用しています)の入力チェックが上手くいきません。ここでは自作関数を呼び出してif文で空白かどうかチェックしてるのですが コード(テキストボックス)=Nullとなってしまい、""のチェックに引っかかってくれません。どうしたら空白=""になってくれるのでしょうか。 デバッグをしてみたらテキストボックスは常にNull(Variant型)なってるのではなくたまに""(String型)になったりするので何が原因で型が変わってるのかも謎です テキストボックスだから""で空文字判定できると思うのですが… 書いたのは以下のコードです。 わかる方よろしくお願いします。 Public Function EmptyCheck(Koumoku As String) As Boolean '引数で渡された項目が入力されているかチェック If Koumoku = ""Then Koumoku.SetFocus Exit Function EmptyCheck = Ture Else EmptyCheck = False End If End Function Private Sub コード_KeyDown(KeyCode As Integer, Shift As Integer) 'Enterキー押したときに処理を開始する If KeyCode = 13 Then If EmptyCheck(コード) = True Then MsgBox "TextBox &を入力してください。" End If

  • Access テキストボックスの文字色

    チェックボックスにチェックが入っていない場合、テキストボックス内の文字色を赤に、チェックを入れたら黒に、またチェックを外したら赤に、という風にしたいです。 条件付書式で設定した場合、条件を満たしたらすぐには反映されず、一旦別のレコードに移動して戻ってくると反映されています。 VBAのコードで Private Sub 処理_AfterUpdate() If チェックボックス = 0 Then '文字色変更処理 Else '文字色変更処理 End If End Sub のようにすれば出来るのではないかと思うのですが、 文字色変更のコードがわかりません。 どなたか教えてください。

  • 条件に該当したテキストボックスの名前を(2)

    前回 http://okwave.jp/qa/q6556269.html で テキストボックスの名前をメッセージボックスに表示する方法(VBA)を 教えて頂いたのですが新たにわからない事がでてきてしまったので 質問させて下さい><自力で解決しようとしたのですがどうしてもできなくて… Accessのバージョンは2003です。 フォームに伝票番号と得意先コードの2つの入力フィールド (テキストボックス)があります。 やりたいことは、以下のようなことです。 伝票番号は100未満の数値でなくてはならず、 得意先コードは1以上かつ10未満でなくてはなりません。 もし、上記の条件に該当しない場合はテキストボックスの色を 黄色に変更させます。 そうしたら黄色に変更されたテキストボックスだけの名前を メッセージボックスに表示させます。 前回教えて頂いたVBAを追記して動かしたところ どちらか片方がエラーの場合はテキストボックスの名前が メッセージボックスに表示されるのですが、 2つともエラーの場合、メッセージボックスが2回表示され 1つのメッセージボックスに1つの名前しか表示されません。 記述したVBAでは正常な動作だと思うのですが、 これを1つのメッセージボックスに黄色のテキストボックスの 名前をいっぺんに表示させたいのですが、 どのようにすれば宜しいでしょうか。 良かったらご教授お願いします!>< 現在記述しているVBAは以下になります。 ---------------------------------------------------------------- Private Sub 閉じる_Click() 'フォーム上のコントロールを格納する変数 Dim ctrl As Control 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Me.Controls '取得したコントロールがテキストボックスかどうか If ctrl.ControlType = acTextBox Then '伝票番号の値が100未満の場合 If Me!txtNo <= 100 Then '背景をピンクに Me!txtNo.BackColor = vbMagenta Else '背景を黄色にして値を元に戻す Me!txtNo.BackColor = vbYellow End If '得意先コードの値が1以上かつ10未満の場合 If Me!txtCode <= 10 And Me!txtCode >= 1 Then '背景をピンクに Me!txtCode.BackColor = vbMagenta Else '背景を黄色にして値を元に戻す Me!txtCode.BackColor = vbYellow End If End If Next ctrl Me.Undo 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Me.Controls 'テキストボックスのコントロールを取得 If TypeOf ctrl Is TextBox Then '取得したコントロールが黄色だった場合 If ctrl.BackColor = vbYellow Then 'メッセージボックスに名前を表示 MsgBox ctrl.Name End If   End If Next ctrl End Sub

  • VB.NETでSQLを作る時のカンマの対処

    こんにちは。 タイトルの通りなのですが、VB.NETでSQL文を作りたいのですが、カンマの対処について分からなかったので質問させて頂きました。 例えば、下記のようなテーブルとwindowsアプリケーションフォームがあったとします。 itemテーブル                 フォーム(□はチェックボックスだと思ってください。) item_id  item_cd  item_name        □ りんご ---------------------------------       □ ばなな 0001    0001    りんご        □ みかん 0002    0002    ばなな        □ めろん 0003    0003    みかん 0004    0004    めろん このフォームで、チェックボックスに印が付いているものを、SQL文の条件に加えたいと思っていますが、なかなか上手く書けません。 現在のソース sql="SELECT item_id,item_cd,item_name " _   & "FROM item " _   & "WHERE item_name IN (" If apple.checked = True Then   sql &= "'" & label1.text & "'," End If If banana.checked = True Then   sql &= "'" & label2.text & "'," End If         ・         ・         ・ このやり方だと、sql文の最後にカンマが残ってしまいます。 ですが、前カンマをやったところで構文的におかしくなってしまいます。 このようなとき、どのように対処すればよいのでしょうか? よろしければ、教えてください。

  • 条件判断について教えて下さい。

    VB2008を使用している初心者です。 現在、RichTextBoxとCheckBoxとそれに対応したTextBoxを準備し、CheckBoxがTrueのTextBox.TextをRichTextBoxに代入するプログラムを作成しています。RichTextBoxにはCheckBoxをTrueにした分だけ複数のTextBox.Textを代入させています。ここまでのプログラムは下記コードで問題なく作動しています。 Button1を押す。 RichTextBox1.Clear() If Me.CheckBox1.Checked = True Then RichTextBox1.Text = TextBox1.Text End If If Me.CheckBox2.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "・" End If RichTextBox1.Text = RichTextBox1.Text & TextBox2.Text End If ・ ・ ・ If Me.CheckBox20.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "・" End If RichTextBox1.Text = RichTextBox1.Text & TextBox20.Text End If ここで問題なのですが、RichTextBox1への代入完了後、FalseにしたCheckBoxを再度True(代入時に選択したもののみ)にするコードをButton2に作成したいのですが上手くいきません。例えば下記のコードですと、RichTextBoxに1つだけTextBoxが入っている場合しかCheckBoxのTrueが戻りません。 If Me.CheckBox1.Checked = False Then If RichTextBox1.Text = TextBox1.Text Then Me.CheckBox1.Checked = True End If End If ・ ・ ・ If Me.CheckBox20.Checked = False Then If RichTextBox1.Text = TextBox20.Text Then Me.CheckBox2.Checked = True End If End If これはIf RichTextBox1.Text = TextBox1.Text Thenにしてしまっているためだと思いますが、これをどう修正したら良いかわかりません。もしお時間がある方みえましたらご教授お願いいたします。

  • if文からcase文への置き換え

    ピクチャボックスをクリックしたら、チェック ボックスがチェックされるメソッドを作りたいと 思っています。 Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click,PictureBox2.Click 'ここから If sender Is PictureBox1 Then If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If ElseIf sender Is PictureBox2 Then If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End If 'ここまで End Sub 上記のif文をCase文に置き換えたくて、 'ここから Select Case sender Case PictureBox1 If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If Case PictureBox2 If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End Select 'ここまで 上記のように書き換えたのですが、エラーが出てしまいます(ビルドは通るのですが)。 Case文の使い方が間違っているんだとは思いますが、どこがどう 間違っているのがよくわかりません。 ご教授いただけないでしょうか?

  • 2つのチェックボックスを制御

    2つのチェックボックスがあり両方ともはずせて片方だけにチェックがつく2つの チェックボックスが作りたいです 自分なりに作成してみました。このソースで不具合等ありませんでしょうか Private Sub ckb1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ckb1.CheckedChanged If ckb1.Checked = True Then ckb2.Checked = False End If End Sub Private Sub ckb2_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ckb2.CheckedChanged If ckb2.Checked = True Then ckb1.Checked = False End If End Sub 新人プログラマーなので自信がありません

  • テキストボックスなら空白にする

    フォームにテキストボックス2つとコンボボックス2つを設置して、 規定値に値を設定し、 Private Sub cb_テキストボックスなら空白にする_Click() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then ctl.Value = Empty End If Next ctl End Sub としたのですが何も起こりません。 空白にするにはどうすればいいでしょうか? あと、 ctl.Valueと打つ時に、 ドットの後に、Valueが一覧に出てきませんでした。 それが原因で空白にならないのでしょうか? ご回答よろしくお願いします。

専門家に質問してみよう