Проверка кнопок настроек в кадре - PullRequest
0 голосов
/ 05 марта 2019

У меня есть две дополнительные кнопки в Frame1.

На кнопке ОК для переноса собранных данных в лист Excel1 я написал следующий код, который фактически извлекает сообщение, но не позволяет завершить передачу данных из объектов пользовательской формы на лист1

Dim ctrl As Control
Dim fr1 As Boolean

For Each ctrl In Me.Controls
    If TypeOf ctrl Is MSForms.OptionButton Then
        Select Case ctrl.Parent.Name
        Case "Frame1"
            If ctrl.Value = True Then fr1 = True
        End Select
    End If
Next ctrl

If fr1 = False Then MsgBox "No selection for option buttons in Frame1"

Exit Sub

Как я могу проверить кнопки опций в frame1, не прерывая отправку данных на sheet1?

1 Ответ

0 голосов
/ 06 марта 2019

Добавьте этот код в свою пользовательскую форму и найдите раздел «<<< Настройка >>>»

Также проверьте комментарии внутри кода.

Option Explicit

Function ValidateOptions() As Boolean

    ' Declare objects
    Dim ctrl As Control

    ' Declare other variables
    Dim oneOptionSelected As Boolean

    ' Loop through each of the forms' controls
    For Each ctrl In Me.Controls
        ' If the control is an option button
        If TypeOf ctrl Is MSForms.OptionButton Then
            ' If it's parent is an specific frame
            If ctrl.Parent.Name = "Frame1" Then

                oneOptionSelected = ctrl.Value
                ' If any of the option buttons is selected
                If oneOptionSelected = True Then Exit For
            End If
        End If
    Next ctrl

    ' If at least one of the option buttons was checked
    If oneOptionSelected = True Then
        ValidateOptions = True
    Else
        MsgBox "No selection for option buttons in Frame1"
    End If

End Function

Private Sub CommandButton1_Click()

    ' Declare objects
    Dim targetSheet As Worksheet

    ' Declare other variables
    Dim targetSheetName As String
    Dim emptyRow As Long
    Dim cancel As Boolean

    ' <<< Customize this >>>
    targetSheetName = "Sheet1"

    ' Validate options
    If ValidateOptions = False Then Exit Sub

    ' Initialize objects
    Set targetSheet = ThisWorkbook.Worksheets(targetSheetName)

    ' Determine emptyRow
    emptyRow = WorksheetFunction.CountA(targetSheet.Range("A:A")) + 1 ' This code is not reliable. Look for solutions on how to find next empty row here in SO

    If Me.OptionButton1.Value = True Then
        targetSheet.Cells(emptyRow, 1).Value = "Accepted"
    Else
        targetSheet.Cells(emptyRow, 2).Value = "Rejected"
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...