• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:visible)

解決法教えてください!a1というチェックboxで表示を変えたい

このQ&Aのポイント
  • a1というチェックboxを使って表示を変える方法を教えてください
  • a1_Change()というサブルーチンでa1というチェックboxの値を取得し、それに応じて表示を変えましょう
  • forループを使ってazとFrame181のVisibleプロパティをa1の値に合わせて変えましょう

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

  • ベストアンサー
  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.2

お疲れ様です。 通常、「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 と、なります。 間違っていたらごめんなさい。

noname#40795
質問者

補足

完璧に出来ました!(ちなみに下の方で。) 有り難うございます。     Me.Controls("a" & CStr(z)).Visible = a1.Value の意味、特にme.controlsの部分、もし宜しかったら意味もご教授いただけますでしょうか?

その他の回答 (2)

  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.3

お疲れ様です。 うまくいって良かったですね^^ほっとしました^^ 補足の件を説明いたします。 「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ではこのような使い方は滅多にしません。(自分の経験上) コントロール配列を使用することの方が多いと思われます。 間違っていたらごめんなさい。

noname#40795
質問者

お礼

解りやすい説明ありがとうございました! とっても勉強になります! コントロール配列・・・よくわからないのでこれも勉強してみます!

noname#3241
noname#3241
回答No.1

Visibleプロパティは『True』か『False』で値を返すので、 表示したいときは az .Visible = True 非表示の場合は az .Visible = False をセットすれば良いと思うのですが。もしやりたいことが見当外れでしたら申し訳ありません。

関連するQ&A

専門家に質問してみよう