2013-01-17 2 views
0

"True"또는 "false"텍스트가있는 Excel 셀에 열이 있습니다.True/False를 포함하는 Excel 셀을 VBA의 확인란으로 변환하십시오.

이 열은 VBA 코드로 채워집니다.

확인란 대신 확인란을 선택하여 True로 표시하고 확인란을 선택 취소하면됩니다.

VBA 코드에서이 작업을 수행 할 수 있습니까? 값을 포함하는 셀은

ActiveWorkBook.Sheets ("mySheetName")에 대해 참조로 가정하자. 셀 (Ⅰ, 4)

I = 루프 내부 행 인덱스.

+0

비주얼 용입니까? 아마도 조건부 서식을 사용할 수 있습니다. 두통을 덜어 주거나 ​​더 많이 만들 수 있습니다. – Bmo

+0

@Manas이 열의 각 행에 체크 상자가 필요하다고 가정해야합니까? 그런 간단한 청소를 True, False로 변경하는 이유는 무엇입니까? 정말 필요하지 않은 경우 불필요한 컨트롤이있는 시트를로드하지 않으려합니다. :) – bonCodigo

+0

안녕하세요 bonCodigo, 선택 행만 선택해야하기 때문에 사용자가/selct를 선택할 수 있기 때문에 확인란이 필요합니다. 나중에 시점. –

답변

1

이 코드는 일을해야한다, 당신의 필요에 따라 루프의 경우 변경 :

 
Sub subPlaceCheckbox() 

    Const cDblCheckboxWidth As Double = 15 
    Const cStrCheckboxPrefix As String = "cb4_" 

    Dim cb As CheckBox 
    Dim rng As Range 
    Dim i As Long 

    Application.ScreenUpdating = False 

    'First, delete all old checkboxes to avoid doubles 
    For Each cb In Sheet1.CheckBoxes 
     If Left(cb.Name, Len(cStrCheckboxPrefix)) = _ 
      cStrCheckboxPrefix Then 
      cb.Delete 
     End If 
    Next 

    For i = 1 To 20 
     Set rng = Sheet1.Cells(i, 4) 

     'Place checkbox 
     Set cb = Sheet1.CheckBoxes.Add(_ 
      rng.Left + rng.Width/2 - cDblCheckboxWidth/2, _ 
      rng.Top, cDblCheckboxWidth, rng.Height) 

     'Set checkbox properties 
     With cb 
      .Name = "cb_" & rng.Address(False, False) 
      .Value = rng.Value 
      .LinkedCell = rng.Address 
      .Display3DShading = True 
      .Characters.Text = "" 
     End With 

     'Hide content of cell 
     rng.NumberFormat = ";;;" 

    Next i 

    Application.ScreenUpdating = True 
End Sub 
+0

피터 감사합니다. 이것은 완벽하게 작동합니다 :) –

1

당신은 그냥 TRUE 또는 FALSE, 당신의 시트에있는 확인란을 추가 말하는 셀을두고 설정할 수 LinkedCell 확인란을 선택하면 원래 셀이됩니다. 셀을보고 싶지 않다면 체크 박스를 셀 위에 놓습니다.