Private Sub CommandButton_Login_Click() Worksheets(7).Visible = True Worksheets(7).Range("user").find(UserForm2.TextBox_Login.Value, LookAt:=xlWhole).Select
If TextBox_Login.Value = ActiveCell.Value Then If TextBox_Password.Value = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value Then UserForm1.TextBox_user_info1.Value = UserForm2.TextBox_Login.Value UserForm1.TextBox_date_info1.Value = Date UserForm1.Show Else MsgBox ("Пароль не верный") Worksheets(7).Range("A1").Select End If Else MsgBox ("ТАкого пользователя не существует") End If TextBox_Password.Value = "" End Sub
[/vba] ----------------------- Вообщем есть файл в котором я планирую хранить данные логинов и паролей. Форма 2 открывает лист и ищет данные если они совпадают, то запускает форму 1. Если пользователь есть в файле то программа работает нормально, если пароль не соотвествует\соответсвует, тоже все нормально, но если пользователя в файле нет, программа выдает ошибку на строке 3. Честно я уже замучался не понимаю в чем проблема. Подскажите пожалуйста что не так в этом коде. В ВБА новичек, формы использую первый раз. [moder]В прошлой Вашей теме Вас уже отсылали к Правилам форума. Вы, видимо, прочитать не удосужились. А зря. Ловите замечание. Код тегами за Вас оформил.
[vba]
Код
Private Sub CommandButton_Login_Click() Worksheets(7).Visible = True Worksheets(7).Range("user").find(UserForm2.TextBox_Login.Value, LookAt:=xlWhole).Select
If TextBox_Login.Value = ActiveCell.Value Then If TextBox_Password.Value = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value Then UserForm1.TextBox_user_info1.Value = UserForm2.TextBox_Login.Value UserForm1.TextBox_date_info1.Value = Date UserForm1.Show Else MsgBox ("Пароль не верный") Worksheets(7).Range("A1").Select End If Else MsgBox ("ТАкого пользователя не существует") End If TextBox_Password.Value = "" End Sub
[/vba] ----------------------- Вообщем есть файл в котором я планирую хранить данные логинов и паролей. Форма 2 открывает лист и ищет данные если они совпадают, то запускает форму 1. Если пользователь есть в файле то программа работает нормально, если пароль не соотвествует\соответсвует, тоже все нормально, но если пользователя в файле нет, программа выдает ошибку на строке 3. Честно я уже замучался не понимаю в чем проблема. Подскажите пожалуйста что не так в этом коде. В ВБА новичек, формы использую первый раз. [moder]В прошлой Вашей теме Вас уже отсылали к Правилам форума. Вы, видимо, прочитать не удосужились. А зря. Ловите замечание. Код тегами за Вас оформил.leskris
On Error Resume Next Worksheets(7).Range("user").Find(UserForm2.TextBox_Login.Value, LookAt:=xlWhole).Select If Err.Number <> 0 Then Exit Sub On Error GoTo 0
[/vba]
Можно вместо строки 3 написать так: [vba]
Код
On Error Resume Next Worksheets(7).Range("user").Find(UserForm2.TextBox_Login.Value, LookAt:=xlWhole).Select If Err.Number <> 0 Then Exit Sub On Error GoTo 0
Второй вариант работает, первый все-равно выдает ошибку, спасибо за помощь, нигде не мог найти инфу про прерывание ошибки почему-то. А можете подсказать причину, по которой моя строка не работает??? я вот думаю может даже когда ошибку не выдает, то код тоже работает не совсем корректно, но я не замечаю этого. ---------------- (Сори за офтоп: насчет оформления кода спецтегами, я просто не знаю этих тегов.. и прошлое замечание было по поводу того что я код выложил в виде скрина, сейчас же я просто выложил код..)
Второй вариант работает, первый все-равно выдает ошибку, спасибо за помощь, нигде не мог найти инфу про прерывание ошибки почему-то. А можете подсказать причину, по которой моя строка не работает??? я вот думаю может даже когда ошибку не выдает, то код тоже работает не совсем корректно, но я не замечаю этого. ---------------- (Сори за офтоп: насчет оформления кода спецтегами, я просто не знаю этих тегов.. и прошлое замечание было по поводу того что я код выложил в виде скрина, сейчас же я просто выложил код..)leskris
Сообщение отредактировал leskris - Пятница, 23.01.2015, 12:18
leskris, Вы не указали что за ошибка у Вас появляется, но могу предположить, что основные причины таковы:
1) Вы не можете выполнить метод Select на НЕ активном листе. Решение - произведите активацию листа перед выбором ячейки, или же просто получите значение ячейки в переменную и не выбирайте ее 2) Лист Worksheets(7) это может быть и не тот лист, что надо на самом деле. Решение - проверьте чтобы не произошло никакой путаницы после скрытия листов.
И плюс к вышеизложенному, я бы на Вашем месте предпочел бы присвоить значение поля TextBox_Login переменной и сразу бы выгрузил форму. Как то типа этого: [vba]
Код
Dim login$ login = UserForm2.TextBox_Login.Value Unload UserForm2
With Worksheets(7) .Visible = True .Activate .Range("user").Find(login, LookAt:=xlWhole).Select End With
[/vba]
leskris, Вы не указали что за ошибка у Вас появляется, но могу предположить, что основные причины таковы:
1) Вы не можете выполнить метод Select на НЕ активном листе. Решение - произведите активацию листа перед выбором ячейки, или же просто получите значение ячейки в переменную и не выбирайте ее 2) Лист Worksheets(7) это может быть и не тот лист, что надо на самом деле. Решение - проверьте чтобы не произошло никакой путаницы после скрытия листов.
И плюс к вышеизложенному, я бы на Вашем месте предпочел бы присвоить значение поля TextBox_Login переменной и сразу бы выгрузил форму. Как то типа этого: [vba]
Код
Dim login$ login = UserForm2.TextBox_Login.Value Unload UserForm2
With Worksheets(7) .Visible = True .Activate .Range("user").Find(login, LookAt:=xlWhole).Select End With
Правильно. Мой метод не работает на Excel 2007. Сразу не посмотрел, что у вас 2007. У меня с 2007-м excel тоже проблемы были. Поставил все обновки и все работает.
Правильно. Мой метод не работает на Excel 2007. Сразу не посмотрел, что у вас 2007. У меня с 2007-м excel тоже проблемы были. Поставил все обновки и все работает.keeper
1) Вы не можете выполнить метод Select на НЕ активном листе. Решение - произведите активацию листа перед выбором ячейки, или же просто получите значение ячейки в переменную и не выбирайте ее 2) Лист Worksheets(7) это может быть и не тот лист, что надо на самом деле. Решение - проверьте чтобы не произошло никакой путаницы после скрытия листов.
Странно почему тогда программа не работала только если логина вообще не было, в остальных случаях все работало, думаю проблема в другом...
1) Вы не можете выполнить метод Select на НЕ активном листе. Решение - произведите активацию листа перед выбором ячейки, или же просто получите значение ячейки в переменную и не выбирайте ее 2) Лист Worksheets(7) это может быть и не тот лист, что надо на самом деле. Решение - проверьте чтобы не произошло никакой путаницы после скрытия листов.
Странно почему тогда программа не работала только если логина вообще не было, в остальных случаях все работало, думаю проблема в другом...leskris