1

各行の最初の 5 つのセルに 5 つのオプション ボタン (フォーム コントロール) があります。オプション ボタンは、各行の 6 番目のセルにそれぞれリンクされており、6 番目のセルのインデックス番号を取得したいと考えています。

(オプション ボタン フォーム コントロールは、そのステータスを示すオプション ボタンの値をリンクされたセルに返します。)

問題は 2 行目以降で、オプション ボタンのインデックス番号が 5 より大きいため、6 番目のセルの値が 5 より大きくなります。1 から 5 の間である必要があります。

(インデックスは OptionButton クラスの読み取り専用プロパティです)

これはどのように達成できますか?(できればvbaなし)

調べてくれてありがとう。

4

1 に答える 1

3

ボタンの各セットの周りに GroupBox を使用してコメントに記載されているように、各セットが互いに独立して動作できるようにします。下の図では、GroupBox Names を削除し、グループボックスの境界線をセル境界線で並べてから、セル境界線を使用してグループボックスをほぼマスクしているため、アクティブに選択されているもの (上部最も多いもの):

ここに画像の説明を入力

リクエストに応じて、VBA コードをいくつか示します。このコードを実行する前に、行の高さを 20 ポイント以上に設定することをお勧めします。グループボックスの最小の高さは 19.5 です。また、オプション ボタンの幅を決定するためにセルの幅が使用されるため、オプション ボタンのテキストに十分な余裕のある幅を使用してください。

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 + 列番号に変更します。

于 2013-07-05T15:00:02.953 に答える