- ベストアンサー
エクセルVBAでのチェックボックス操作
- エクセルを利用した、VBAで困っています。所定のsheetに埋め込まれたチェックボックスに対して、別sheet内のセルの値を参照し、結果をオン、オフという操作を行いたいのです。
- イメージとしては(1)Sheet1内にチェックボックスがある。該当チェックボックスは7個のチェックボックスで構成されておりそれぞれにchb1~chb7といったオブジェクト名がある。(2)sheet2のA1セルに特定の値が入っていればチェックボックス(chb1)がオン値がなければオフのまま(3)sheet2のB1セルに特定の値が入っていればチェックボックス(chb2)がオン値がなければオフのままという感じです。
- 先方より指定された様式なのでsheet1の内容や書式を変更することが出来ないので、なんとか埋め込まれたオブジェクトを操作したいのですが・・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 一例です。 適当に応用してください。 Sub test1() Dim Ws1 As Worksheet Dim Ws2 As Worksheet Dim i As Integer Dim myKey myKey = Array("特定値1", "特定値2", "特定値3", "特定値4", _ "特定値5", "特定値6", "特定値7") Set Ws1 = Worksheets("Sheet1") Set Ws2 = Worksheets("Sheet2") For i = 1 To 7 If Ws2.Cells(1, i).Value = myKey(i - 1) Then Ws1.OLEObjects("chb" & i).Object.Value = True Else Ws1.OLEObjects("chb" & i).Object.Value = False End If Next i Set Ws1 = Nothing Set Ws2 = Nothing End Sub
その他の回答 (2)
- ka_na_de
- ベストアンサー率56% (162/286)
こんにちは。 サンプルプログラムでは、 myKey = Array("特定値1", "特定値2", "特定値3", "特定値4", _ "特定値5", "特定値6", "特定値7") で、それぞれの文字列で比較しています。 もし、特定値が数値であれば、 myKey = Array(1,2,3,4,5,6,7) のように数値で指定してください。 また、特定値が複数の値であったり、ある範囲の値の場合は 改良が必要です。
お礼
>ka_na_de様 ご支援ありがとうございました。 無事に期待通りの動作を実現することが出来ました。
- bin-chan
- ベストアンサー率33% (1403/4213)
まずは「マクロの記録」でチェックボックスをチェック状態にするコードを生成させる。 そのうえで、シート2!A1をIF文で判定して値を設定するコードを書く。
お礼
>bin-chan様 間違えて質問捕捉に記載していました。 何回か「マクロの記録」をやってみたのですが、まったく記録されずです。 質問記載が不十分だったかも知れませんが、チェックボックスはどうやらコントロールオブジェクトを使用されているようです。
補足
>bin-chan様 何回か「マクロの記録」をやってみたのですが、まったく記録されずです。 質問記載が不十分だったかも知れませんが、チェックボックスはどうやらコントロールオブジェクトを使用されているようです。
お礼
>ka_na_de様 ありがとうございます。 さっそく試してみたところ、正常にオブジェクトは選択されているような動作をしているのですが、チェックがオン状態になりません。 おそらくif文の条件指定と思いますので、いろいろと試行錯誤してみます。