2014-11-18 5 views
0

통합 문서를 만들기 전에 웹 서비스에서 데이터를 가져 오는 Excel 추가 기능을 개발 중입니다.프로그래밍 방식으로 셀을 체크 박스로 형식 지정

예제 통합 문서에서 일부 셀은 1이거나 비어 있습니다. 이들은 SUM med이고 결과는 다른 곳에 저장됩니다.

나는 특히 이것을 좋아하지 않으며이 필드에 대한 확인란을 사용하는 방법을 생각하려고하지만 여전히 셀 값을 1 또는 0 (체크 및 체크되지 않음)으로 유지하려고합니다.

이 나에게 몇 가지 질문이 있습니다 :

  1. 이 체크 박스를 추가하고 구성 할 수 있습니다를 그래서 1의 값을 제공합니다 확인하고 선택 해제는 관련 셀에 0을 준다?
  2. Excel 추가 기능 내에서 프로그래밍 방식으로이 작업을 수행 할 수 있습니까?

내 광범위한 연구 기능 (구글)를 사용하여 내가 체크 박스를 추가하고 TRUE 또는 FALSE에 세트를 셀 값의 선택을 취소/확인하도록 셀과 연결할 수 있다는 것을 발견했다. 이것이 유일한 옵션 인 경우 (아마 한숨을 내 쉬어 라!)하지만 addin의 C# 코드에서이 작업을 수행 할 수 있습니까?

답변

1

이 워크 시트의 코드 영역에 다음과 같은 이벤트 매크로를 입력

을 클릭 단일보다는 을 두 번 클릭하여 세포에게 그것은 를 사용하여 구현됩니다

B9를 사용하는 예입니다

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    Dim B9 As Range 
    Set B9 = Range("B9") 
    If Intersect(B9, Target) Is Nothing Then Exit Sub 
    B9.Font.Name = "Marlett" 
    Cancel = True 
    If B9.Value = 1 Then 
     B9.Value = 0 
     B9.NumberFormat = ";;;" 
    Else 
     B9.Value = 1 
     B9.NumberFormat = Chr(34) & "a" & Chr(34) & ";;;" 
    End If 
End Sub 

더블 클릭 b9 wil 수표를 토글합니다. 이 나타납니다 -

  1. 은 마우스 오른쪽 단추로 클릭 엑셀 창 하단의 탭 이름을
  2. 보기를 선택 코드 :이 워크 시트 코드이기 때문에

    , 사용하기 매우 설치가 용이하고 자동으로 VBE 창

  3. 가있는 물건을 붙여 당신이 어떤 문제가있는 경우 시험 워크 시트에 그것을 시도 먼저 VBE 창을

을 닫습니다.

통합 문서를 저장하면 매크로도 함께 저장됩니다. 2003 년 이후 Excel 버전을 사용하는 경우 파일을 .xlsm 대신 저장해야합니다.

매크로를 제거하려면 XLSX :

는 일반적으로 매크로에 대한 자세한 내용을 보려면 VBE 창을 닫고 밖으로

  • 명확한 코드 위와 VBE 창을 불러옵니다 참조 :

    http://www.mvps.org/dmcritchie/excel/getstarted.htm

    http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

    이벤트 매크로 (워크 시트 코드)에 대한 자세한 내용은 다음을 참조하십시오

    http://www.mvps.org/dmcritchie/excel/event.htm

    매크로는이 작업을 활성화해야합니다!

    참고 :

    표준 왼쪽 버튼 클릭을 사용하여 이벤트를 구현할 수 있지만, 좀 더 코드입니다.

  • +0

    의 Arg을 나는 매크로를 피하기 위해 기대했다 - 방법이 체크 박스를 사용하는 저를 가능하게 않는다 - 덕분에 그것을 시도 :) – CompanyDroneFromSector7G

    +0

    나를 미치게되는 실례를 줄 것이다? – CompanyDroneFromSector7G

    +0

    * Forms * 유형 CheckBox 또는 * ActiveX * 유형 CheckBox가 아닙니다. ** CheckBox처럼 보이도록 포맷 된 셀입니다. 셀은 체크되거나 비어 있지만 ** ** ** ** ** ** –

    1

    매우 도움이되는 것으로 나타났습니다.

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    
    Dim TickBoxes As Range 
    
    'Specify the range of cells you want to be tickboxes 
    
    Set TickBoxes = Union(Range("A1"), Range("B2:D8"), Range("E9:G15")) 'etc 
    
    If Intersect(TickBoxes, Target) Is Nothing Then Exit Sub 
    
    Target.Font.Name = "Marlett" 
    Cancel = True 
    
    If Target.Value = 1 Then 
        Target.Value = 0 
        Target.NumberFormat = ";;;" 
    Else 
        Target.Value = 1 
        Target.NumberFormat = Chr(34) & "a" & Chr(34) & ";;;" 
    End If 
    
    End Sub 
    

    하지 않는 것이 현명하지만 희망 누군가에게 사용 : 내가 기본 값을 유지하면서 각 쳤다 될 수 boxethat 진드기 등 다수의 셀을 지정할 수 있습니다 주위 있도록 내가 코드를 설정!

    앨런 K

    관련 문제