アプリ版:「スタンプのみでお礼する」機能のリリースについて

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”のところで出てしまいます。
どなたかご教授ねがいます。

A 回答 (2件)

> エラーは”CheckBoxes”のところで出てしまいます。


いつから複数形で記述することになったのかな?
CheckBox("チェック 1").Value = False
と単数形に書き替えたらどうなりますか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
いろいろ調べたら下記のコードでできました

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

お礼日時:2014/02/23 12:51

2003だとエラーは出ずに正常に動きました。



以下のコードにしてみたらかがでしょうか
Shapes("Check Box 1").ControlFormat.Value = 1

TrueだとエラーでFalseはOkでした。
    • good
    • 0
この回答へのお礼

ありがとうございます。
いろいろやってみたら下記のコードでできました。

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

お礼日時:2014/02/23 12:51

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