2013-07-05 1 views
1

각 행의 처음 5 개 셀에 5 개의 옵션 버튼 (양식 컨트롤)이 있습니다. 옵션 버튼은 각 행 에 대한 여섯 번째 셀에 연결되어 있고 여섯 번째 셀에 인덱스 번호를 가져 오려고합니다. OptionButton 색인 발행

는 (옵션 버튼 양식 컨트롤은 연결된 셀에 상태를 나타내는 옵션 버튼의 값을 반환합니다.)

지금 문제는 이후 옵션 버튼의 인덱스 번호가 너무 이상 5 이고 두 번째 행에서입니다 여섯 번째 셀의 값은 내가 그들을

5. 1 사이되고 싶어요 5보다 큰

방법이 달성 될 수있다 (지수는 OptionButton 클래스의 읽기 전용 속성입니다)? (바람직하지 vba)

주셔서 감사합니다.

+1

이것은 작동하지 않습니다. 그러나 관련 옵션 단추에 대한 그룹 상자 컨트롤을 배치하면 원하는대로 작동합니다. – shahkalpesh

+0

@shahkalpesh 상태에서 옵션 버튼의 각 독립 GROUP은 자신의 GroupBox 내에 있어야합니다 – user2140261

답변

3

GroupBox를 사용하는 설명에 명시된대로 각 단추 세트마다 각 세트가 서로 독립적으로 작동 할 수 있습니다. 아래 그림에서 GroupBox 이름을 제거하고 셀 경계선을 사용하여 groupboxes의 경계선을 정렬 한 다음 셀 경계선을 사용하여 그룹 상자를 거의 마스킹 했으므로 실제로 선택된 경계선을 제외하고는 말할 수 없습니다 (맨 위 대부분의 사람은) : 요청에

enter image description here

여기에 몇 가지 VBA 코드입니다. 이 코드를 실행하기 전에 행의 높이를 최소 20 포인트로 설정하는 것이 좋습니다. 그룹 박스의 최소 높이가 19.5이기 때문에 셀의 너비가 OptionButton의 너비를 결정하는 데 사용되므로 OptionButton의 텍스트에 충분한 여유가있는 너비를 사용해야합니다.

Sub Sample() 

Dim Top As Variant, Left As Variant, Height As Variant, Width As Variant 
Dim rngActiveRowA As Range, rngEndOfBox As Range 
Dim lngActiveRow As Long, lngActiveColumn As Long 

With Application 
    .ScreenUpdating = False 
    .Calculation = xlCalculationManual 
    .EnableEvents = False 
End With 

For lngActiveRow = 1 To 5 

Set rngActiveRowA = Range("A" & lngActiveRow) 

Set rngEndOfBox = Range("F" & lngActiveRow + 1) 

Top = rngActiveRowA.Top 
Left = rngActiveRowA.Left 
Height = rngEndOfBox.Top - Top 
Width = rngEndOfBox.Left - Left 

ActiveSheet.GroupBoxes.Add(Left, Top, Width, Height).Caption = "" 

    For lngActiveColumn = 1 To 5 

    With ActiveSheet 
     Top = .Cells(lngActiveRow, lngActiveColumn).Top 
     Left = .Cells(lngActiveRow, lngActiveColumn).Left 
     Height = .Cells(lngActiveRow + 1, lngActiveColumn + 1).Top - Top 
     Width = .Cells(lngActiveRow + 1, lngActiveColumn + 1).Left - Left 
    End With 

    With ActiveSheet.OptionButtons.Add(Left, Top, Width, Height) 
     .Characters.Text = "OB" & lngActiveColumn 
     .LinkedCell = "$F$" & lngActiveRow 
    End With 

    Next lngActiveColumn 

Next lngActiveRow 


With Application 
    .ScreenUpdating = True 
    .Calculation = xlCalculationAutomatic 
    .EnableEvents = True 
End With 

End Sub 

이 코드는 처음 5 개의 행에 대해 각 행의 첫 번째 5 열을 기준으로 그룹 상자를 만듭니다. 또한 해당 행의 F 셀에 링크 된 해당 영역의 각 셀 내에 옵션 단추가 채워집니다. 각 버튼의 이름을 OB + 열 번호로 바꿉니다.

+0

답변 해 주셔서 감사합니다. 이미지는 내가 찾는 것입니다. vba를 사용하여이 그룹 박스 및 옵션 버튼을 만들 수 있습니까? 그렇다면 코드를 공유 할 수 있습니다. – Santosh

+0

@Santosh 요청에 따라 샘플 VBA를 포함하도록 답변을 업데이트했습니다. – user2140261

+0

좋아요. 고마워. – Santosh