プロが教える店舗&オフィスのセキュリティ対策術

エクセルを利用した、VBAで困っています。
所定のsheetに埋め込まれたチェックボックスに対して、
別sheet内のセルの値を参照し、結果をオン、オフという
操作を行いたいのですが、チェックボックスに対するVBAでの指定方法
が分かりません。
イメージとしては
(1)Sheet1内にチェックボックスがある。
 該当チェックボックスは7個のチェックボックスで構成されており
 それぞれにchb1~chb7といったオブジェクト名がある。
(2)sheet2のA1セルに特定の値が入っていればチェックボックス(chb1)
 がオン値がなければオフのまま
(3)sheet2のB1セルに特定の値が入っていればチェックボックス(chb2)
 がオン値がなければオフのまま
という感じです。
先方より指定された様式なのでsheet1の内容や書式を変更することが出来ないので、なんとか埋め込まれたオブジェクトを操作したいのですが・・・

良い方法があれば教えてください。

A 回答 (3件)

こんにちは。



サンプルプログラムでは、
  myKey = Array("特定値1", "特定値2", "特定値3", "特定値4", _
          "特定値5", "特定値6", "特定値7")
で、それぞれの文字列で比較しています。

もし、特定値が数値であれば、
  myKey = Array(1,2,3,4,5,6,7)
のように数値で指定してください。

また、特定値が複数の値であったり、ある範囲の値の場合は
改良が必要です。
    • good
    • 0
この回答へのお礼

>ka_na_de様
ご支援ありがとうございました。
無事に期待通りの動作を実現することが出来ました。

お礼日時:2010/03/10 16:34

こんばんは。



一例です。
適当に応用してください。

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
    • good
    • 0
この回答へのお礼

>ka_na_de様
ありがとうございます。
さっそく試してみたところ、正常にオブジェクトは選択されているような動作をしているのですが、チェックがオン状態になりません。
おそらくif文の条件指定と思いますので、いろいろと試行錯誤してみます。

お礼日時:2010/03/10 09:11

まずは「マクロの記録」でチェックボックスをチェック状態にするコードを生成させる。



そのうえで、シート2!A1をIF文で判定して値を設定するコードを書く。

この回答への補足

>bin-chan様
何回か「マクロの記録」をやってみたのですが、まったく記録されずです。
質問記載が不十分だったかも知れませんが、チェックボックスはどうやらコントロールオブジェクトを使用されているようです。

補足日時:2010/03/10 00:11
    • good
    • 0
この回答へのお礼

>bin-chan様
間違えて質問捕捉に記載していました。

何回か「マクロの記録」をやってみたのですが、まったく記録されずです。
質問記載が不十分だったかも知れませんが、チェックボックスはどうやらコントロールオブジェクトを使用されているようです。

お礼日時:2010/03/10 09:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!