2013-11-21 4 views
0

전체 양식 컨트롤 (ActiveX 제외) 확인란이 여러 개인 워크 시트 통합 문서가 있습니다. 내가 체크 (True)를 선택하면 모든 확인란의 배경 (채우기) 색상이 바뀔 일부 VBA를 찾고 있습니다. 하나의 확인란에 대한 코드를 보았지만 여러/모든 상자에 대한 코드는 본적이 없습니다. 나는 VBA만으로도 위험하다는 것을 안다. 그러나 나는 새로운 것을 배울 것이다.VBA 변경 확인란 선택시 채우기 색

+0

'하나의 체크 박스에 대한 코드를 보았습니다.'단순히 체크 박스의 click 이벤트에서 그 코드를 서브 용도로 사용하십시오. 이를 위해'Application.Caller'를 사용해야 할 것입니다. –

답변

1

내 의견에 대한 자세한 내용은이 예를 참조하십시오.

CheckBox3Sheet1에있는 모든 체크 박스의 _Click()가 동일한 모듈에있는 모든 당신이 '돈 있도록 다음 모듈의 상단에 다음 두 줄을 이동할 수 있습니다 경우 CheckBox2Sheet2

Sub CheckBox3_Click() 
    Dim actvWs As Worksheet 
    Dim CB As String 

    Set actvWs = ActiveSheet 
    CB = Application.Caller 

    ColorCB actvWs, CB 

    ' 
    '~~> Rest of the code 
    ' 
End Sub 

Sub CheckBox2_Click() 
    Dim actvWs As Worksheet 
    Dim CB As String 

    Set actvWs = ActiveSheet 
    CB = Application.Caller 

    ColorCB actvWs, CB 

    ' 
    '~~> Rest of the code 
    ' 
End Sub 

Sub ColorCB(ws As Worksheet, Cbox As String) 
    With ws.Shapes(Cbox) 
     '~~> 13 is for Yellow, 1 is for White 
     .Fill.ForeColor.SchemeColor = IIf(.ControlFormat.Value = xlOn, 13, 1) 
     .Fill.Visible = msoTrue 
    End With 
End Sub 

에 모든 Sub에 신고해야합니다.

Dim actvWs As Worksheet 
Dim CB As String 
+0

좋은 답변입니다. 체크 박스가 많이있을 경우에는 'With Events' 체크 박스 하나를 사용하는 커스텀 클래스를 생성하고 여기서'_Click' 이벤트에 대한 코드를 제공 할 수 있습니다. 그런 다음 모든 "체크 박스"를 "래퍼"에 할당하면됩니다. 하나의'_Click' 이벤트가 있습니다 ... –

+0

@PeterAlbert : 절대 :) –