VBA: Как передать содержимое из мульти-флажка (созданного в пользовательской форме) в модуль - PullRequest
0 голосов
/ 11 декабря 2018

Я бы хотел передать содержимое из multicheckbox (созданного в пользовательской форме) в модуль для дальнейшего использования.Эта функция в коде:

В модуле:

 Public pass1 As Boolean
 Public pass2 As Boolean
 Public pass3 As Boolean
 Public pass4 As Boolean
Public Sub MultiCheckBoxes()
    Dim varArraySelected As Variant
    Dim ivar As Long
    varArraySelected = Array()

    UserForm1.Show

    ivar = 0
    If pass1 = True Then
        ReDim Preserve varArraySelected(0 To ivar)
        varArraySelected(ivar) = "Fase 1"
        ivar = ivar + 1 'Advance the counter to next array item

    End If
    If pass2 = True Then
            ReDim Preserve varArraySelected(0 To ivar) 'Reset the array dimension on each iteration of loop
            varArraySelected(ivar) = "Fase 2" 'Add value in Column B to Array
            ivar = ivar + 1 'Advance the counter to next array item

    End If
    If pass3 = True Then
            ReDim Preserve varArraySelected(0 To ivar) 'Reset the array dimension on each iteration of loop
            varArraySelected(ivar) = "Fase 3" 'Add value in Column B to Array
            ivar = ivar + 1 'Advance the counter to next array item

    End If
    If pass4 = True Then
            ReDim Preserve varArraySelected(0 To ivar) 'Reset the array dimension on each iteration of loop
            varArraySelected(ivar) = "Fase 4"  'Add value in Column B to Array

    End If
    Unload UserForm1

End Sub

В пользовательской форме:

Option Explicit    
Private Sub CheckBox1_Click()    
End Sub
Private Sub CheckBox2_Click()      
End Sub
Private Sub CheckBox3_Click()  
End Sub
Private Sub CheckBox4_Click()    
End Sub

Private Sub CommandButton1_Click()        
    pass1 = UserForm1.CheckBox1.Value
    pass2 = UserForm1.CheckBox2.Value    
    pass3 = UserForm1.CheckBox3.Value  
    pass4 = UserForm1.CheckBox4.Value
    Unload UserForm1
End Sub

Здесь 'Fase 1', ..., 'Фаза 4 '- текстовое содержимое в четырех флажках, созданных в UserForm1.

При запуске модуля VBA я получил ошибки «Обнаружено неоднозначное имя: pass1».Как решить проблему?

Заранее спасибо!

1 Ответ

0 голосов
/ 11 декабря 2018

Измените свой саб на это:

Public Sub MultiCheckBoxes(pass1 As Boolean, pass2 As Boolean, pass3 As Boolean,pass4 As Boolean)

Затем назовите его так:

MultiCheckBoxes(UserForm1.CheckBox1.Value, UserForm1.CheckBox2.Value, UserForm1.CheckBox3.Value, UserForm1.CheckBox4.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...