powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка TextBox на пустоту
72 сообщений из 72, показаны все 3 страниц
Проверка TextBox на пустоту
    #39893088
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята Здравствуйте! сделал проверку, но у меня потребность работы этого кода была на нескольких кнопках для одной формы, дабы не плодить его на кнопках поместил в модуль, и вызываю с кнопки, ПРОБЛЕМА! в том что при клике цикл заканчивается "Next ti" и сразу срабатывает другой код а должно быть по задумке закончить работу цикла и не продолжать работу цикла до тех пор пока все поля не будут заполнены. что можете посоветовать?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub CommandButton1_Click() 'договор
Call проверка
'=========
другой код
.......................
End Sub

Sub проверка()
Dim i As Long
For i = 1 To 15
If Trim(Controls("TextBox" & i)) = "" Then Controls("TextBox" & i).BackColor = &H80C0FF: _
MsgBox "Выделенные поля обязательны для заполнения", vbInformation, "Информация": Exit Sub
If Trim(Controls("TextBox" & i)) > 0 Then Controls("TextBox" & i).BackColor = &H80000005
Next ti
End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893107
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei
"Next ti"
Учитывая то, что "For ti" в приведенном коде отсутствует, я вообще удивляюсь, что он не падает, а продолжает какую-то работу.
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893139
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei, даже если Next ti это опечатка, то зачем цикл до 15, зачем там цикл вообще нужен?
когда это условие
Код: vbnet
1.
If Trim(Controls("TextBox" & i)) = "" Then


сработает?
когда это условие
Код: vbnet
1.
Trim(Controls("TextBox" & i)) > 0 Then


не сработает? а если ввели не цифру?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893583
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, да "очепятка", поспешил),

Код: vbnet
1.
2.
3.
4.
5.
6.
Dim i As Long
For i = 1 To 15 цикл пробегает по текстовым полям и проверяет по условиям

If Trim(Controls("TextBox" & i)) = "" Then условие проверяет поле на пустоту

Trim(Controls("TextBox" & i)) > 0 Then условие проверяет поле на если поле не пустое
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893587
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
несоотвествий много если есть после проверки Exit Sub, тогда как будет сообщение "Выделенные поля во множественном числе?
я не уверен, а что здесь ("TextBox" & i) не нужно .Text ?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893651
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, дело в том что реали если весь этот код поместить на кнопку, работает как мне надо т.е. проверка происходит по очередной с 1 ого текстового поля по 15 т.е. соответственно если к примеру поле 10 12 или 14 не заполнено то проверка происходит с 10 ого поля а не с 12 и т.д, соответствующее сообщение появляется и окрашивается корич. цветом, поэтому и посчитал нужным прописать цикл (с позиции чайника)

Только вот что бы не плодить код по кнопкам на одной форме я и пожелал бы этот код разместить в модуле и обращаться из кнопок , пускай их не много но все же взять за правило (как начинающего)
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893652
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа
assei,
а что здесь ("TextBox" & i) не нужно .Text ?


согласен может и нужно, поверьте пробовал, сути не меняло и сути работы кода не изменилось, так спрашивается "на хрена козе баян" , если можно и обойтись, проблемы то не решена для меня по крайне мере , может я что то упускаю (а я полагаю что упускаю, однозначно), помогите с ошибкой или задайте вопросы наводящие, я должен как то учится !
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893653
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, я тут примерчик навоял
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893654
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei
помогите с ошибкой или задайте вопросы наводящие
наводящий вопрос - в чем выражается ошибка?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893655
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot assei#22023142]...... ПРОБЛЕМА! в том что при клике цикл заканчивается "Next ti"-(ошибочка мой косяк) "Next i" и сразу срабатывает другой код а должно быть по задумке закончить работу цикла и не продолжать работу цикла до тех пор пока все поля не будут заполнены. что можете посоветовать?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893659
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
что-то разницу увидел только в цикле не до 15, а до 7-и
по теме сорри, не нужно .Text
а так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Поля_обязательны_для заполнения = 0
For i = 1 To 15
If Trim(Controls("TextBox" & i)) = "" Then
Controls("TextBox" & i).BackColor = &H80C0FF
Поля_обязательны_для заполнения = Поля_обязательны_для заполнения + 1
ElseIf Trim(Controls("TextBox" & i)) > 0 Then
Controls("TextBox" & i).BackColor = &H80000005
End If
Next i
If Поля_обязательны_для заполнения = 1 Then
MsgBox$ "Выделенное поло обязательно для заполнения", vbInformation, "Информация"
ElseIf Поля_обязательны_для заполнения > 1 Then
MsgBox$ "Выделенные поля обязательны для заполнения", vbInformation, "Информация"
End If
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893660
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
работу цикла до тех пор пока все поля не будут заполнены. что можете посоветовать?
GoTo Не_заполнены_поля-в конце моего кода
Не_заполнены_поля:-в начале моего кода
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893661
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, простите это два варианта или это один код, просто некоторые строки при вставке красным выделились..
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893664
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub проверка()
Dim i As Long
Поля_обязательны_для заполнения = 0
For i = 1 To 15
If Trim(Controls("TextBox" & i)) = "" Then
Controls("TextBox" & i).BackColor = &H80C0FF
Поля_обязательны_для заполнения = Поля_обязательны_для заполнения + 1
ElseIf Trim(Controls("TextBox" & i)) > 0 Then
Controls("TextBox" & i).BackColor = &H80000005
End If
Next i
If Поля_обязательны_для заполнения = 1 Then
MsgBox$ "Выделенное поло обязательно для заполнения", vbInformation, "Информация"
Exit Sub
ElseIf Поля_обязательны_для заполнения > 1 Then
MsgBox$ "Выделенные поля обязательны для заполнения", vbInformation, "Информация"
Exit Sub
End If



End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893665
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
плохо что нет редактирования сообщений
и ещё ошибка пол о обязательно
нужно
поле обязательно
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893667
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, немного под себя "подшаманил" получилось так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub проверка()
Dim i
For i = 1 To 7
If Trim(UserForm1.Controls("TextBox" & i)) = "" Then
UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
MsgBox "Выделенные Поля_обязательны_для заполнения", vbInformation, "Сообщение"
Exit Sub
ElseIf Trim(UserForm1.Controls("TextBox" & i)) > 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80000005
End If
Next i
End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893668
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei
и сразу срабатывает другой код а должно быть по задумке закончить работу
Почему должно закончить? Ты же ничего для этого не сделал.
"Я бросил мячик вниз, и он падает вниз, почему он не завис в воздухе?"
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893669
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei
немного под себя "подшаманил" получилось так
Осталось заменить Sub на Function и сообщить вызывающему коду, что нужно прерваться.
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893670
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа
плохо что нет редактирования сообщений
Есть, однако
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893671
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа
плохо что нет редактирования сообщений

а это как, если удалить из поля данные то при нажатии покажет что поле не заполнено, а что вы имели ввиду интересно поделитесь мыслью
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893673
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
ещё
строки
Код: vbnet
1.
2.
If Trim(Controls("TextBox" & i)) = "" 
If Trim(Controls("TextBox" & i)) > 0


это как сравнивать холодное и красное
так должно быть
Код: vbnet
1.
If  Len(Trim(Controls("TextBox" & i)))
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893675
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, Len это проверка строки , значит ее на что то надо проверить?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893676
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei, это длина
ну хотя бы так
Код: vbnet
1.
2.
If Trim(Controls("TextBox" & i)) = "" 
If Trim(Controls("TextBox" & i)) <> ""


но через длину лучше
Код: vbnet
1.
2.
If Len(Trim(Controls("TextBox" & i))) = 0 
If Len(Trim(Controls("TextBox" & i))) <> 0
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893677
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, честно говоря я как то не уловил хот мыслей ваш по отношению к моему коду что и где что проверяет Len
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893678
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, согласен если мне понадобится проверять в поле длину данных в текстовом поле то да , но пока такой надобности нет, спасибо огромное всем!
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893679
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, проверил согласен! спасибо , только вот всегда хочется стремится к минимум кода, но и ваш работает! спасибо
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893730
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
Len никогда не считает длину строки, а берёт готовое значение, которое всегда хранится в начале строки, поэтому лучше и быстрее не сравнивать строку с "", а считать длину
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893750
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, это все хорошо и позновательно для меня, но сути проблемы я так и не увидел,
Почему же у меня загружается код после выхода , после прерывания?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
'в модуле
Sub проверка()
Dim i
For i = 1 To 7
If Len(Trim(UserForm1.Controls("TextBox" & i))) = 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
MsgBox "Выделенные Поля_обязательны_для заполнения", vbInformation, "Сообщение"
Exit Sub 
'ПОСЛЕ ОКОНЧАНИЯ СРАБАТЫВАЕТ КОД НА КНОПКЕ

ElseIf Len(Trim(UserForm1.Controls("TextBox" & i))) <> 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80000005
End If
Next i
MsgBox "Чего тыркаешь! Все поля требуемые для заполнения заполнены!", vbInformation, "Сообщение"
End Sub

'НА КНОПКЕ
Private Sub CommandButton1_Click() 
'====
Call проверка
'=====
......... ДРУГОЙ КОД
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893754
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что между "Call проверка" и "ДРУГОЙ КОД" у тебя нет никакого прерывания, почему оно должно прерываться по твоему? Ты ничего для этого не сделал.
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893756
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, так между перво проверкой указал Exit Sub , код должен прерваться
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893759
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда ты внутри " Sub проверка()" пишешь "Exit Sub ", у тебя заканчивается выполнение " Sub проверка" и не более того. Точно так же, как оно заканчивается, когда доходит до последней команды внутри " Sub проверка".

А вот внутри " Sub CommandButton1_Click" у тебя нет никакого "Exit Sub ", поэтому после "Call проверка" выполняется "ДРУГОЙ КОД", просто команды выполняются друг за другом последовательно, если ты ничего не сделаешь для изменения порядка выполнения команд.
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893792
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, у меня только что приходит это перенести код из модуля который проверяет второе условие, НО я бы хотел оставить в модуле, а так
Код: vbnet
1.
2.
Call проверка
 Exit Sub

у меня вообще после заполнения все полей не выполняется далее код
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893794
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Само собой, теперь ты написал Exit Sub и процедура заканчивается
А тебе нужно выполнять Exit Sub только если проверка не прошла
А для этого ты должен знать результат проверки. А "проверка" никак не сообщает тебе результат проверки.
Что нужно сделать - я писал выше.
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893832
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, я изменил порядок, но на кнопке оставил как есть Call проверка, но код срабатывает в двух условий
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub проверка()
Dim i
For i = 1 To 7
If Len(Trim(UserForm1.Controls("TextBox" & i))) <> 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80000005


ElseIf Len(Trim(UserForm1.Controls("TextBox" & i))) = 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
MsgBox "поле пустое", vbInformation, "!"
Exit Sub
End If
Next i
End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893834
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, даже если прерываю так, в этом случае не срабатывает ни чего
Код: vbnet
1.
2.
Call проверка
Exit Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893851
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, ну как еще объяснить?
Не писать же всю программу за тебя, ты так ничему не научишься
Код: vbnet
1.
2.
3.
Call проверка
If ....... Then Exit Sub
......... ДРУГОЙ КОД



думай
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893856
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, блин так проверку надо делать ??!!! так я понял что проверку в кнопке надо делать НО я то хотел весь код оставить в модуле
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893862
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и оставляй в модуле.
Только результат проверки тебе нужно вернуть из модуля в код кнопки
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893904
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в эти прерывания не вник, но я думаю вот что об этом
есть форма, на ней есть поля для заполнения, и кнопка, делает что-то ....
предполагается что юзер заполняет поля и жмёт кнопку
вот он нажал кнопку-прога не после первого не правильно заполненного поля выдает резюме, а сразу все проверяет
правее от поля я бы поставил лейблы, в случае правильности на лейблы ставил зелёного цвета галочку иначе красного цвета крестик
информативно и сразу по всем полям
и какое прерывание? если что-то неладно, предполагается что юзер улаживает и снова жмёт кнопку и всё повторяется....
по моему так, не?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893907
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно и чтобы кнопка появилась, была доступна только когда все поля заполнил
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893918
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа,
сейчас пообедаем и будем дальше мозг выедать
мне бы хотелось бы понять, тот подход который мною задумано
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893947
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сессия началась, что ли? от куда столько вопросов 0 уровня?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893964
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, сами то давно стали "умным"?
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893987
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, не получается

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Sub CommandButton1_Click()
Stop
'====
Call проверка
If i = 0 Then Exit Sub
код другой

'=====
End Sub

Public i
Function проверка()

For i = 1 To 3
If Len(Trim(UserForm1.Controls("TextBox" & i))) <> 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80000005
Exit Function

ElseIf Len(Trim(UserForm1.Controls("TextBox" & i))) = 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
MsgBox "поле пустое", vbInformation, "!"
End If
Exit Function

Next i
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893993
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нужно использовать public

Нужно вернуть результат из функции "проверка"

Для этого нужно открыть учебник и почитать, как в VB создаются функции, как из них возвращаются значения, как принять значение из вызванной функции в переменную.
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39893998
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
каша какая-то
Код: vbnet
1.
2.
3.
Exit Function'-зачем?

Next i


Код: vbnet
1.
If i = 0 Then Exit Sub


когда станет =0?
пальчиком жмите на Эф8
и в нужных местах добавьте
Debug.Print ....
в Immediate смотрите результат
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894287
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, после того как прошла проверка и все поля заполнены
Код: vbnet
1.
2.
3.
4.
For i = 1 To 3
If Len(Trim(UserForm1.Controls("TextBox" & i))) <> 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80000005
Exit Function


процедура попадает в
Код: vbnet
1.
2.
If i <> 0 Then Exit Sub
другой код


но почему то и на прерывание попадает "Exit Sub" а если убрать прерывание то и код на проверку пустых полей
Код: vbnet
1.
2.
3.
4.
5.
6.
ElseIf Len(Trim(UserForm1.Controls("TextBox" & i))) = 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
MsgBox "поле пустое", vbInformation, "!"
End If
Exit Function
Next i


тоже попадает в
Код: vbnet
1.
2.
If i <> 0 Then 
другой код
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894313
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, сдается я проверку не правильно делаю
Код: vbnet
1.
If i <> 0 Then 
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894344
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи строку, в которой твоя функция "проверка" возвращает результат проверки (или хоть какой-нибудь результат)
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894361
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, вложение
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894376
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я просил показать строку, а не прислать файл
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894385
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
все функции проверки возвращают один результат, заходят в процедуру
" If (i) <> 0 Then" и "End If" срабатывание другого кода не происходит


Код: vbnet
1.
2.
3.
4.
5.
Call проверка
   If (i) <> 0 Then
'=====
другой код
End If



если убрать прерывания проверки то код зацикливается проверяет-выделяет и все ни куда более
Код: vbnet
1.
2.
3.
4.
5.
6.
ElseIf Len(Trim(UserForm1.Controls("TextBox" & i))) = 0 Then
    UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
        MsgBox "поле пустое ", vbInformation, "!"
            End If
                'Exit Function
Next i
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894393
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
после работы кода проверки на заполненность полей
Код: vbnet
1.
2.
3.
If Len(Trim(UserForm1.Controls("TextBox" & i))) <> 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80000005
Exit Function


, код прерывается
Код: vbnet
1.
Exit Function


проверяется а кнопке
Код: vbnet
1.
2.
If (i) <> 0 Then
вот где моя загвоздка



и end if

я навожу курсор на (i) = показывает - Empty
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894399
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei
Код: vbnet
1.
вот где моя загвоздка

нет, не тут пока что

У тебя есть функция Function проверка()
она должна возвращать результат - прошла проверка или нет
True или False

Сначала это сделай
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894405
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
Call проверка Да_или_Нет

Function проверка(Да_или_Нет)
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894424
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, i = постоянно True
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894428
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
Код: vbnet
1.
2.
3.
Call проверка Да_или_Нет

Function проверка(Да_или_Нет)



а здесь в условиях где поля заполнены Да_или_Нет=True, иначе нет
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894433
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub CommandButton1_Click()
Stop
'====
Call поверка
    If i < 0 Then
Exit Sub
ElseIf i > 0 Then   код проверки If.... проверяет попадает сюда , НО НЕ продолжает работать другой код сразу  End If
другой код
'=====
End If

End Sub
Function проверка()
For i = 1 To 3
If Len(Trim(UserForm1.Controls("TextBox" & i))) > 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80000005
Exit Function
ElseIf Len(Trim(UserForm1.Controls("TextBox" & i))) < 0 Then
UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
MsgBox "поле пустое ", vbInformation, "!"
End If
Exit Function
Next i
End Function
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894465
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя функция "проверка" не возвращает результат.
В учебник я тебя уже отправлял.

Шаги следующие:
- Сделать так, чтобы функция возвращала True или False, в зависимости от того, успешная проверка была или нет
- В CommandButton1_Click прочитать результат выполнения функции в переменную
- Проверить результат, если False, то не выполнять "другой код"
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894819
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Call означает, что идём в Sub, а Вам нужно идти в Function, потому, что она после работы может нечто вернуть, вот и пишете
в строке где Call проверка Да_или_Нет
а саму функцию пишите так: Function проверка(Да_или_Нет)
и поболее Debug.Print добавьте в код-осознание придёт....
не забудьте объявить булевую переменную Да_или_Нет
Option Explicit в самом верху поможет не забыть.....
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894849
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
катастрофа, подскажите правильно ли я пользуюсь immediate?
в окне immediate: только как Debug.Print в коде работает?

Код: vbnet
1.
2.
Debug.Print Trim(UserForm1.Controls("TextBox" & i)) = "" (интер)
True



и все это в момент выполнения кода!
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39894913
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei,
Debug.Print это типа инфа, просто подводить курсор к нужному не всегда удобно, и не всегда показывает
то есть
Код: vbnet
1.
Debug.Print Trim(UserForm1.Controls("TextBox" & i))


и никаких =, присваиваний
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39895167
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа
и никаких =, присваиваний
Ну почему же? Можно и присваивать, можно просто переменную посмотреть. В случае наличия сравнения
Код: vbnet
1.
Trim(UserForm1.Controls("TextBox" & i)) = ""


в Immediate будет выведено True или False. Если там целое выражение - то оно выполнится и результат будет выведен.
Только как всегда неясно как и где это применяет наш ТС. Если не использовать Debug.Print, то можно в окне Immediate написать:
Код: vbnet
1.
?Trim(UserForm1.Controls("TextBox" & i)) = ""


Т.е. сначала вопр.знак, потом выражение или переменную и нажать Enter(вопр.знак по сути просто заменяет длинную запись debug.Print при работе в Immediate, но можно вместо него прямо так и писать - debug.Print "выражение"). При этом, если не поставить вопр.знак, то выражение выполнится в Run-time, т.е. таким образом можно "на лету" изменить значение переменной во время отладки. И даже выполнить целую конструкцию. Например:
Код: vbnet
1.
For i& = 1 to 10: ii& = ii&+i: next:debug.Print ii&


Это просто записывается в Immediate и нажимается Enter.

assei , вроде уже говаривалось не один раз: ну начните уже что-то читать по VBA, а не пальцем тыкать куда ни попадя. Себе же время сэкономите. Потому как уже не один месяц топчитесь вокруг азов программирования VBA и все как-то не очень продуктивно. Вопросы по азам да по азам, никакого прогресса :)
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39895168
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,
не знал такого, так-что ТС, сорри, если ввёл в заблуждение
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39895174
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist
assei , вроде уже говаривалось не один раз: ну начните уже что-то читать по VBA, а не пальцем тыкать куда ни попадя. Себе же время сэкономите. Потому как уже не один месяц топчитесь вокруг азов программирования VBA и все как-то не очень продуктивно. Вопросы по азам да по азам, никакого прогресса :)
Я бы добавил, что к тому, что пишет Эндрю (ака катастрофа) нужно относиться крайне осторожно, потому что как бы ни была низка твоя квалификация, у него она еще ниже.
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39896235
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, вопрос решил так и поверьте ни кто не помогал просто сам без метода тыка только проверка на TRUE - FALSE
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
'в модуле
Public i
Sub проверка()
'Stop
For i = 1 To 3
If UserForm1.Controls("TextBox" & i) = "" Then
    UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
        MsgBox "Выделенные поля обязательны для заполнения", vbInformation, "Информация"
            Exit Sub
                End If
Trim (UserForm1.Controls("TextBox" & i)) > 0
    UserForm1.Controls("TextBox" & i).BackColor = &H80000005
Next i
i = False
End Sub



Код: vbnet
1.
2.
3.
4.
5.
6.
'на кнопке
Private Sub CommandButton1_Click()
Call проверка
If i > 0 Then Exit Sub
MsgBox "сообщение"
End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39896240
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже ближе. Этот код работает, но он плохой по двум причинам:
1) используется Public переменная вместо использования возврата значения из функции
2) одна и та же переменная используется для хранения разных типов значений и разных предметов по сути
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39896294
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, а так тоже коряво
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public f As Double
Sub проверка()
'Stop
For i = 1 To 3
If UserForm1.Controls("TextBox" & i) = "" Then
    UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
        MsgBox "поле пустое", vbInformation, "сообщение"
            Exit Sub
                End If
Trim (UserForm1.Controls("TextBox" & i)) > 0
    UserForm1.Controls("TextBox" & i).BackColor = &H80000005
Next i
If i > 0 Then
i = f
f = True
End If

Private Sub CommandButton1_Click()
Call проверка
If f = 0 Then Exit Sub
MsgBox "другой код"
End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39896305
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
assei
Код: vbnet
1.
i = f

вот это для чего?

2)
assei
Код: vbnet
1.
f As Double

assei
Код: vbnet
1.
f = True

почему тип не соответствует?

3)Нигде нет f = False, это значит программа сработает корректно только один раз, при повторном нажатии кнопки будет выдавать неверные результаты

4)По-прежнему используется Public
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39896499
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наверное так!

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public i ' но без нее ни как
Sub проверка()
Dim f As Boolean
For i = 1 To 3
If UserForm1.Controls("TextBox" & i) = "" Then
    UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
        MsgBox "поле пустое", vbInformation, "!"
            Exit Sub
                End If
Trim (UserForm1.Controls("TextBox" & i)) > 0
    UserForm1.Controls("TextBox" & i).BackColor = &H80000005
Next i
If i <> f Then
i = True
End If
End Sub

Private Sub CommandButton1_Click()
Call проверка
If i > 0 Then Exit Sub
MsgBox "сообщение"
End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39896515
assei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
по совету (катастрофа) изменил правильнее будет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub проверка()
Dim f As Boolean
For i = 1 To 3
If Len(Trim(UserForm1.Controls("TextBox" & i))) = 0 Then '
    UserForm1.Controls("TextBox" & i).BackColor = &H80C0FF
        MsgBox "поле пустое", vbInformation, "!"
            Exit Sub
                End If
If Len(Trim(UserForm1.Controls("TextBox" & i))) > 0 Then
    UserForm1.Controls("TextBox" & i).BackColor = &H80000005
    End If
Next i
If i <> f Then
i = True
End If
End Sub
...
Рейтинг: 0 / 0
Проверка TextBox на пустоту
    #39896530
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assei
наверное так!
теперь написан полный бред


assei
по совету (катастрофа)
про его советы я тебе выше уже говорил

assei
Код: vbnet
1.
но без нее ни как

я уже два раза говорил, что нужно сделать. Или три.
...
Рейтинг: 0 / 0
72 сообщений из 72, показаны все 3 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка TextBox на пустоту
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]