- ベストアンサー
解決法教えてください!a1というチェックboxで表示を変えたい
- a1というチェックboxを使って表示を変える方法を教えてください
- a1_Change()というサブルーチンでa1というチェックboxの値を取得し、それに応じて表示を変えましょう
- forループを使ってazとFrame181のVisibleプロパティをa1の値に合わせて変えましょう
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
お疲れ様です。 通常、「az」として現されているものが同じコントロールであれば コントロール配列を使用します。 コントロール配列を用いた場合の書き方は、 Private Sub a1_Click() Dim z As Integer For z = 23 To 38 a(z).Visible = a1.Value Next z For z = 42 To 57 a(z).Visible = a1.Value Next z Frame181.Visible = a1.Value End Sub と、なります。 もし、同じコントロールでは無い、その他の理由でコントロール配列に 出来ない場合の書き方は、 Private Sub a1_Click() Dim z As Integer For z = 23 To 38 Me.Controls("a" & CStr(z)).Visible = a1.Value Next z For z = 42 To 57 Me.Controls("a" & CStr(z)).Visible = a1.Value Next z Frame181.Visible = a1.Value End Sub と、なります。 間違っていたらごめんなさい。
その他の回答 (2)
- josyo_m
- ベストアンサー率63% (28/44)
お疲れ様です。 うまくいって良かったですね^^ほっとしました^^ 補足の件を説明いたします。 「Me」は、プログラムソースを記述しているFormオブジェクト自身を指します。 「Controls」は、そのオブジェクトに属しているコントロールのコレクションです。 「Me.Controls」で、Formオブジェクトに属しているコントロールを参照することが出来ます。 Meを使わずにForm名を使っても良いです。(Form1.Controls等でもOK) 「Me.Controls(コントロール名)」でコントロールを参照できます。 なので、例にあげたソースで、z = 32の時に、 Me.Controls("a" & CStr(z)).Visible = a1.Value は、 Me.Controls(a32).Visible = a1.Value となり、 a32.Visible = a1.Value と同じ扱いになります。 ただし、通常VBではこのような使い方は滅多にしません。(自分の経験上) コントロール配列を使用することの方が多いと思われます。 間違っていたらごめんなさい。
お礼
解りやすい説明ありがとうございました! とっても勉強になります! コントロール配列・・・よくわからないのでこれも勉強してみます!
Visibleプロパティは『True』か『False』で値を返すので、 表示したいときは az .Visible = True 非表示の場合は az .Visible = False をセットすれば良いと思うのですが。もしやりたいことが見当外れでしたら申し訳ありません。
補足
完璧に出来ました!(ちなみに下の方で。) 有り難うございます。 Me.Controls("a" & CStr(z)).Visible = a1.Value の意味、特にme.controlsの部分、もし宜しかったら意味もご教授いただけますでしょうか?