Страницы: 1
RSS
VBA Перебор массивом CheckBox'ов в заданном диапазоне ( например, с 6 по 10)
 
Доброго времени суток, многоуважаемые форумчане! Будьте любезны, подскажите правильный синтаксис либо верное направление в гугле для того, чтобы перебрать переменные в следующем куске кода:

Пожалуйста, сильно не пинайте. Гуглил, но не понял. Если кто-то накидает хотя бы сырой пример кода, буду крайне признателен! Спасибо!
Кусок кода, который под вопросом:
Код
For Check = 1 To 6
For Check2 = 8 To 13


If CheckBox(Check).Value = True Then
Range("a" & Check).Value = TextBox(Check).Value
КолвоСтрок = КолвоСтрок + 1

    If TextBox(Check2).Value = 0 Then
        ВыбранноеТопливо = ВыбранноеТопливо & TextBox(Check).Value & Chr(10)
        Else
        ВыбранноеТопливо = ВыбранноеТопливо & TextBox(Check).Value & ":   " & TextBox(Check2).Value & " " & Валюта & Chr(10)
    End If
    
End If

Next
Next

Весь код:
Код
Private Sub CommandButton1_Click()
ActiveWorkbook.RemovePersonalInformation = False

'Выбираем валюту
If OptionButton1.Value = True Then Валюта = "л."
If OptionButton2.Value = True Then Валюта = "руб."


'Выбираем виды топлива.  Если стоит галочка, значит кнопка активна
КолвоСтрок = 0

For Check = 1 To 6
For Check2 = 8 To 13


If CheckBox(Check).Value = True Then
Range("a" & Check).Value = TextBox(Check).Value
КолвоСтрок = КолвоСтрок + 1

    If TextBox(Check2).Value = 0 Then
        ВыбранноеТопливо = ВыбранноеТопливо & TextBox(Check).Value & Chr(10)
        Else
        ВыбранноеТопливо = ВыбранноеТопливо & TextBox(Check).Value & ":   " & TextBox(Check2).Value & " " & Валюта & Chr(10)
    End If
    
End If

Next
Next

'If CheckBox1.Value = True Then Range("a1").Value = TextBox1.Value: КолвоСтрок = КолвоСтрок + 1: If TextBox8.Value = 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox1.Value & Chr(10): If TextBox8.Value > 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox1.Value & ":   " & TextBox8.Value & " " & Валюта & Chr(10)
'If CheckBox2.Value = True Then Range("a2").Value = TextBox2.Value: КолвоСтрок = КолвоСтрок + 1: If TextBox9.Value = 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox2.Value & Chr(10): If TextBox9.Value > 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox2.Value & ":   " & TextBox9.Value & " " & Валюта & Chr(10)
'If CheckBox3.Value = True Then Range("a3").Value = TextBox3.Value: КолвоСтрок = КолвоСтрок + 1: If TextBox10.Value = 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox3.Value & Chr(10): If TextBox10.Value > 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox3.Value & ":   " & TextBox10.Value & " " & Валюта & Chr(10)
'If CheckBox4.Value = True Then Range("a4").Value = TextBox4.Value: КолвоСтрок = КолвоСтрок + 1: If TextBox11.Value = 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox4.Value & Chr(10): If TextBox11.Value > 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox4.Value & ":   " & TextBox11.Value & " " & Валюта & Chr(10)
'If CheckBox5.Value = True Then Range("a5").Value = TextBox5.Value: КолвоСтрок = КолвоСтрок + 1: If TextBox12.Value = 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox5.Value & Chr(10): If TextBox12.Value > 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox5.Value & ":   " & TextBox12.Value & " " & Валюта & Chr(10)
'If CheckBox6.Value = True Then Range("a6").Value = TextBox6.Value: КолвоСтрок = КолвоСтрок + 1: If TextBox13.Value = 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox6.Value & Chr(10): If TextBox13.Value > 0 Then ВыбранноеТопливо = ВыбранноеТопливо & TextBox6.Value & ":   " & TextBox13.Value & " " & Валюта & Chr(10)

'Выводим ошибки о невыбранных параметрах
If КолвоСтрок = 0 Then MsgBox "" & vbNewLine & "" & vbNewLine & "Выберете вид топлива!" & vbNewLine & "" & vbNewLine & "", vbOKOnly + vbExclamation, "": Exit Sub
If Валюта = "" Then MsgBox "" & vbNewLine & "" & vbNewLine & "Выберете Литры или Рубли!" & vbNewLine & "" & vbNewLine & "", vbOKOnly + vbExclamation, "": Exit Sub


msg = MsgBox("Проверьте правильность указанных параметров." & vbNewLine & vbNewLine & vbNewLine & vbNewLine & _
"Виды топлива (" & КолвоСтрок & "):" & vbNewLine & vbNewLine & ВыбранноеТопливо & vbNewLine & vbNewLine & vbNewLine & _
"Валюта: " & vbNewLine & vbNewLine & Валюта & vbNewLine & vbNewLine & vbNewLine & vbNewLine & vbNewLine & vbNewLine & _
"Все верно?", vbYesNo + vbInformation, "Проверьте правильность указанных данных")
If msg = vbNo Then Exit Sub


Unload Me
End Sub
Улыбнись.
 
Получилось сообразить лишь такое неработоспособное:
Код
For Check = 1 To 6
For Check2 = 8 To 13

Set CheckBox = Me.Controls("CheckBox" & Check).Value
Set TextBox = Me.Controls("TextBox" & Check).Value
Set TextBox_2 = Me.Controls("TextBox" & Check2).Value



If CheckBox = True Then

    Range("a" & Check).Value = TextBox
    КолвоСтрок = КолвоСтрок + 1


        If TextBox_2 = 0 Then
                ВыбранноеТопливо = ВыбранноеТопливо & TextBox & Chr(10)
            Else
                ВыбранноеТопливо = ВыбранноеТопливо & TextBox & ":   " & TextBox_2 & " " & Валюта & Chr(10)
        End If
    
End If
Улыбнись.
 
Код
for i = 6 to 10
  if userform1.controls("CheckBox" & i) then MsgBox "CheckBox" & i & "  отмечен"
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, благодарю Вас! А как вместо "userform1" брать имя активного элемента? Например, CheckBox'a, которым инициирован макрос?
Улыбнись.
 
Что значит "вместо"? Зачем?
 
Юрий М, чтобы не прописывать имя каждого CheckBox'a, а заставить машину автоматически определять его при использовании событий
Улыбнись.
 
Цитата
falmrom написал:
Например, CheckBox'a, которым инициирован макрос
Так используйте для запуска не событие ЧекБокса, а "итоговую" кнопку.
И Вы не ответили:
Цитата
Юрий М написал:
Что значит "вместо"?
Форма является родительским объектом этих самых ЧекБоксов - что может быть вместо неё?
 
Цитата
falmrom написал:
А как вместо "userform1" брать имя активного элемента?
да что угодно!
сформулируете вопрос - получите ответ (в след. теме)
а пока вопрос звучит:
Цитата
falmrom написал:
Перебор массивом CheckBox'ов в заданном диапазоне ( например, с 6 по 10)
ответ прозвучал так, как прозвучал
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, большое спасибо Вам за быстрый ответ :)
Улыбнись.
 
быстрота - это моя отличительная черта (собственно из-за этого меня бросила жена, она называла это стемительностью)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
falmrom написал: чтобы не прописывать имя каждого CheckBox'a, а заставить машину автоматически определять его при использовании событий
'Лакернём' тему КЛАССАМИ
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх