Итак, у меня есть нижеприведенная программа, работающая в пользовательской форме, которая должна извлекать код краткости из именованного диапазона для каждого флажка в установленном флажке группы, а затем распечатывать его в нужной ячейке на рабочем листе.
Dim AirExGroup As Frame
Dim TrkExGroup As Frame
Dim OthrExgroup As Frame
Dim cb As Control
Set AirExGroup = Me.AirExGrp 'Contains all Air exception checkboxes
Set TrkExGroup = Me.TruckExGrp 'Contains all Truck exception checkboxes
Set OthrExgroup = Me.OthrExGrp 'Contains all Other exception checkboxes
'Airline Exceptions
For Each cb In AirExGroup.Controls
If TypeName(cb) = "CheckBox" Then
If cb.ControlFormat.Value = 1 Then
'If checked, print Brevity code from Air_Ex list to Air Exception Column
Else
'If no boxes checked, print "N/A" in exceptions cell
End If
End If
Next cb
'Trucker Exceptions
For Each cb In TrkExGroup.Controls
If TypeName(cb) = "CheckBox" Then
If cb.ControlFormat.Value = 1 Then
'If checked, print Brevity code from Trk_Ex list
Else
'If no boxes checked, print "N/A" in exceptions cell
End If
End If
Next cb
'Warehouse Exceptions
For Each cb In OthrExgroup.Controls
If TypeName(cb) = "CheckBox" Then
If cb.ControlFormat.Value = 1 Then
'If checked, print Brevity code from Othr_Ex list
Else
'If no boxes checked, print "N/A" in exceptions cell
End If
End If
Next cb`
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу на всю жизнь понять, как получить раздел, который проверяет, какие флажки отмечены, чтобы извлечь правильные коды краткости из кодаперечислите и распечатайте их в правильные ячейки на листе.Я попытался использовать приведенное ниже для загрузки этих данных в массив, но я не могу заставить их говорить друг с другом, так сказать.Я нашел много решений для проверки, является ли группа флажков истинными или ложными, и много решений для извлечения данных из массива, но я не нашел здесь ничего, что обсуждало бы и работу в тандеме, и, к сожалению, я до сих пору меня нет опыта, чтобы придумать новое решение самостоятельно.
Dim Exceptions(1 To 8, 1 To 2) As String
Dim i As Integer, j As Integer
Dim cb As Shape
For i = 2 To 8
For j = 1 To 2
Exceptions(i, j) = Worksheets("List_Data").Cells(i, j).Value
Next j
Next i
MsgBox Exceptions(4, 1) & ", " & Exceptions(6, 1)
Я уже 4 дня ломаю голову над поиском в Google, поэтому любую помощь, которую вы, ребята, можете предложить, даже если этобудет очень признателен, просто подтолкнуть в правильном направлении.
---- РЕДАКТИРОВАТЬ ---- Я думаю, что, возможно, начал понимать это, но я получаюошибка «Объект не поддерживает это свойство или метод», и я не уверен, как это исправить.Отладка указывает на If cb.ControlFormat.Value = True
.Любой совет, какой синтаксис использовать, чтобы найти истинное / ложное состояние флажков в групповом поле?
Set AirCBCap = Worksheets("List_Data").Range("B2") 'Define checkbox caption reference column
Set Air_Ex = Worksheets("List_Data").Range("A2") 'Define brevity code list reference
For Each cb In AirExGroup.Controls
If TypeName(cb) = "CheckBox" Then
If cb.ControlFormat.Value = True Then
For i = 0 To 6
If cb.Caption = AirCBCap.Offset(i, 0).Value Then 'If checked, find offset in caption name list that matches the checkbox caption
If AirCode = "" Then
AirCode = Air_Ex.Offset(i, 0) 'Find the offset that matches the offset of the checkbox caption and apply that to "AirCode"
Else
AirCode = AirCode & ", " & Air_Ex.Offset(i, 0).Value
End If
End If
Next i
Else
AirCode = "N/A" 'If no boxes checked, print "N/A" in exceptions cell
End If
End If
Next cb
emptyCell.Offset(0, 13).Value = AirCode