programing

워크시트 기반 확인란 선택 여부 확인

goodsources 2023. 5. 31. 15:52
반응형

워크시트 기반 확인란 선택 여부 확인

IF 절을 사용하여 "확인란 1"이라는 이름의 확인란이 선택되어 있는지 확인하려고 합니다.

현재 코드:

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개가 있습니다)은 시트 1에 "요구"라는 이름으로 있습니다.각 확인란의 형식은 "확인란..."과 동일합니다.

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관련 확인란 이름을 사용합니다.

ActiveX 확인란 컨트롤의 VBA 매크로 코드에서 다음을 사용하는 것 같습니다.

If (ActiveSheet.OLEObjects("CheckBox1").Object.Value = True)

양식 확인란 컨트롤의 경우 다음을 사용합니다.

If (ActiveSheet.Shapes("CheckBox1").OLEFormat.Object.Value = 1)

이전의 답변을 바탕으로, 당신은 다음과 같은 사실을 활용할 수 있습니다.True-1이고False0이고 다음과 같이 코드를 줄입니다.

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.

시도:Controls("Check Box 1") = True

언급URL : https://stackoverflow.com/questions/11741836/checking-if-a-worksheet-based-checkbox-is-checked

반응형