VBAに関する質問です。B2のセルにアルバム名を入力すると、B3〜49の予め用意された表に、対応する曲名のリストが表示されるようになっています。B3〜49の横には、1つずつチェックボックスが非表示で埋め込まれており、B2セルに変更され、曲名が入った行にはチェックボックスが表示されるよう、下記の通りの記述を35回(B3〜49、title1〜35)繰り返しています。一応これで狙い通りの動作はしている状態です。 If Range(\u0026quot;B3\u0026quot;) = \u0026quot;\u0026quot; Then title1.Visible = False Else title1.Visible = True End Ifこれをループ処理でスッキリさせたいのですが、どうしてもうまく動きません。素人質問ですが、どなたが教えていただけないでしょうか。 Dim t As Variant: t = 1 Dim e As Long Dim a As Object Dim b As Boolean: b = False Dim c As Boolean: c = True For e = 3 To 49 If Cells(e, 2) = \u0026quot;\u0026quot; Then Set a = \u0026quot;title\u0026quot; \u0026amp; t a.Visible = b t = t + 1 Else Set a = \u0026quot;title\u0026quot; \u0026amp; t a.Visible = b t = t + 1 End If Next eこんな感じでcontrolsだとか色々試したのですが、型が合わず…。

1件の回答

回答を書く

1284032

2026-03-15 04:35

+ フォロー

\u0026gt; 一応これで狙い通りの動作はしている状態です。



そのコードで狙い通りの動作をするということは、



●チェックボックスは ActiveX コントロールである

●B3:B49 に対応したチェックボックスのオブジェクト名は title1~title47 である

●そのコードは当該シートのシートモジュールに書かれている



ということであろうと推測します。であれば以下でよいかと。



Sub Sample()

    Dim r As Long

    For r = 3 To 49

        If Cells(r, \u0026quot;B\u0026quot;).Value = \u0026quot;\u0026quot; Then

            Me.OLEObjects(\u0026quot;title\u0026quot; \u0026amp; r - 2).Visible = False

        Else

            Me.OLEObjects(\u0026quot;title\u0026quot; \u0026amp; r - 2).Visible = True

        End If

    Next

End Sub

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有