Как установить автоматически сгенерированную Option Button на «True» на основе значения в другом диапазоне в VBA? - PullRequest
0 голосов
/ 14 ноября 2018

Я сгенерировал переключатели с помощью ответа на другой вопрос, Как установить для автоматически сгенерированного переключателя значение true в VBA? .

Мое требование - установить автоматически сгенерированную кнопку Option в значение «True», если на другом листе есть значение «x».Пожалуйста, обратитесь к картине.

Рисунок 1: Источник для проверки значения,

enter image description here

Рисунок 2: Лист, к которому должна быть пометка «х»отражаться как Истина.

enter image description here

Сгенерированные радиокнопки индексируются как OB2_2 для кнопки выбора в 2 строке и 2 столбце.

Вот код, с которым я пытался,

Private Sub AddOptionButtons(ByRef TargetRange As Range)

Dim m As Variant
m = Sheets("ALLO").Range("D23").Value + 1

Sheets("Final").Range("A2:A" & m).Copy Destination:=Sheets("Int_Result").Range("A2:A" & m)

Dim oCell As Range
For Each oCell In TargetRange
    oCell.RowHeight = 20
    oCell.ColumnWidth = 6
    Dim oOptionButton As OLEObject
    Set oOptionButton = TargetRange.Worksheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Left:=oCell.Left + 1, Top:=oCell.Top + 1, Width:=15, Height:=18)
    oOptionButton.Name = "OB" & oCell.row & "_" & oCell.Column
    oOptionButton.Object.GroupName = "grp" & oCell.Top


Next
Call OB2_Click(oCell)

End Sub

Sub OB2_Click(oCell)

Dim col, ro, m As Variant
Dim Shap As Shape
m = Sheets("ALLO").Range("D23").Value + 1

For Each Shap In Sheets("Int_Result").Shapes
    For ro = 2 To m Step 1
        For col = 1 To 13 Step 1
            If Sheets("Final").Cells(ro, col).Value = "" Then
               Sheets("Int_Result").Shapes(ro, col).ControlFormat.Value = False
            Else
               Sheets("Int_Result").Shapes(ro, col).ControlFormat.Value = True
            End If
        Next col
    Next ro
Next Shap

End Sub

Когда я попробовал этот код, я получил сообщение об ошибке «Переменная объекта или переменная блока не установлена» или «Неверно»количество аргументов или неверное присвоение свойства ".Руководство меня, чтобы получить доступ к автоматически сгенерированных кнопок радио

Пожалуйста, помогите мне в этом вопросе.Заранее спасибо!

1 Ответ

0 голосов
/ 14 ноября 2018

Вам необходимо использовать

 Sheets("Int_Result").OLEObjects("OB2_2").Object.Value = True

Установить цикл не для фигур, а перпендикулярно последней строке и последнему столбцу.

Так, например:

Dim oCell As Range
Dim LastCell As Range
For Each oCell In TargetRange
    oCell.RowHeight = 20
    oCell.ColumnWidth = 6
    Dim oOptionButton As OLEObject
    Set oOptionButton = TargetRange.Worksheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Left:=oCell.Left + 1, Top:=oCell.Top + 1, Width:=15, Height:=18)
    oOptionButton.Name = "OB" & oCell.Row & "_" & oCell.Column
    oOptionButton.Object.GroupName = "grp" & oCell.Top
    Set LastCell = oCell

Next
Call OB2_Click(LastCell)

Sub OB2_Click(oCell as Range)

Dim col As Long, ro As Long
dim m as long, k as long

col = oCell.Column
ro = oCell.Row

For m = 2 to ro
    For k = 2 to col
         If Sheets("Final").Cells(m, k).Value = "" Then
             Sheets("Int_Result").OLEObjects("OB" & m & "_" & k).Object.Value = False
         Else
             Sheets("Int_Result").OLEObjects("OB" & m & "_" & k).Object.Value = True
         End If
    Next k
Next m
End sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...