• 締切済み

VBAにてフォームコントロールの変更

VBAでフォームコントロールのチェックボックスのON・OFFを変更することは可能でしょうか。 具体的にはA.xlsmのマクロを実行して、 A.xlsmのセルA1が0ならB.xlsの"チェック 1"がOFF状態に。1ならON状態になる。 以上のような仕組みを作りたいです。 (フォームコントロールなのは様式(B.xls)がフォームコントールで作成されており、変更不可のため) ですが、同じシート内でもチェックボックスのON・OFFができずに挫折しそうです。 まずは同一シート内で作ってみようと思い下記コードを作成したのですが、 ”SubまたはFunctionが定義されていません”となってしまいます。 Public Sub test() If Range("A1") = 0 Then CheckBoxes("チェック 1").Value = False ElseIf Range("A1") = 1 Then CheckBoxes("チェック 1").Value = True Else MsgBox "無効な値が設定されています" End If End Sub エラーは”CheckBoxes”のところで出てしまいます。 どなたかご教授ねがいます。

みんなの回答

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

2003だとエラーは出ずに正常に動きました。 以下のコードにしてみたらかがでしょうか Shapes("Check Box 1").ControlFormat.Value = 1 TrueだとエラーでFalseはOkでした。

-ales-
質問者

お礼

ありがとうございます。 いろいろやってみたら下記のコードでできました。 Public Sub test() If Range("A1") = 0 Then With ActiveSheet.CheckBoxes("チェック 1") .Value = xlOff End With ElseIf Range("A1") = 1 Then With ActiveSheet.CheckBoxes("チェック 1") .Value = xlOn End With Else MsgBox "無効な値が設定されています" End If End Sub

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> エラーは”CheckBoxes”のところで出てしまいます。 いつから複数形で記述することになったのかな? CheckBox("チェック 1").Value = False と単数形に書き替えたらどうなりますか?

-ales-
質問者

お礼

ありがとうございます。 いろいろ調べたら下記のコードでできました Public Sub test() If Range("A1") = 0 Then With ActiveSheet.CheckBoxes("チェック 1") .Value = xlOff End With ElseIf Range("A1") = 1 Then With ActiveSheet.CheckBoxes("チェック 1") .Value = xlOn End With Else MsgBox "無効な値が設定されています" End If End Sub

関連するQ&A

専門家に質問してみよう