私は、プログラムでさらに使用するために、「チェックボックス1」という名前のチェックボックスがチェックされているかどうかを判断するために、IF句を使用しようとしています。
私の現在のコード:
Sub Button167_Click()
If ActiveSheet.Shapes("Check Box 1") = True Then
Range("Y12").Value = 1
Else
Range("Y12").Value = 0
End If
End Sub
これは機能していないようですが、デバッグで問題があることがわかります
ActiveSheet.Shapes("Check Box 1")
ただし、このコードが機能することはわかっています(別の目的を果たしている場合でも)。
ActiveSheet.Shapes("Check Box 1").Select
With Selection
.Value = xlOn
編集:より多くの情報が必要な場合、私のチェックボックス(私のページには200個あります)は、「Demande」という名前でsheet1にあります。また、各チェックボックスには、「チェックボックス...」と同じ形式の名前が付いています。
すべての助けをいただければ幸いです。ありがとう
Sub Button167_Click()
If ThisWorkbook.Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then
Range("Y12").Value = 1
Else
Range("Y12").Value = 0
End If
End Sub
1がチェックされ、-4146がオフにされ、2が混合されます(灰色のボックス)
これはあなたがしようとしていることですか?
Sub Sample()
Dim cb As Shape
Set cb = ActiveSheet.Shapes("Check Box 1")
If cb.OLEFormat.Object.Value = 1 Then
MsgBox "Checkbox is Checked"
Else
MsgBox "Checkbox is not Checked"
End If
End Sub
Activesheet
を関連するシート名に置き換えます。また、Check Box 1
を関連するチェックボックス名に置き換えます。
previousanswers に基づいて、True
が-1でFalse
が0であるという事実を活用して、このようにコードを短縮できます。 :
_Sub Button167_Click()
Range("Y12").Value = _
Abs(Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0)
End Sub
_
チェックボックスがオンの場合、_.Value
_ = 1。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
はTrue
を返します。
Abs
関数を適用すると、True
が_1
_に変換されます。
チェックボックスがオフの場合、_.Value
_ = -4146。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
はFalse
を返します。
Abs
関数を適用すると、False
が_0
_に変換されます。
ActiveXチェックボックスコントロールのVBAマクロコードで使用しているようです
If(ActiveSheet.OLEObjects( "CheckBox1")。Object.Value = True)
使用するフォームチェックボックスコントロール
If(ActiveSheet.Shapes( "CheckBox1")。OLEFormat.Object.Value = 1)