Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выдает ошибку при обработки поиска ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выдает ошибку при обработки поиска ячейки (Макросы/Sub)
Выдает ошибку при обработки поиска ячейки
leskris Дата: Пятница, 23.01.2015, 06:57 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 90
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016 (Office 365)
[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]В прошлой Вашей теме Вас уже отсылали к Правилам форума. Вы, видимо, прочитать не удосужились. А зря. Ловите замечание. Код тегами за Вас оформил.
 
Ответить
Сообщение[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
Дата добавления - 23.01.2015 в 06:57
keeper Дата: Пятница, 23.01.2015, 10:34 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Я делал так
[vba]
Код

   If Worksheets("Лист1").Cells.Find("Что ищем") Is Nothing Then
         MsgBox "Указанного текста нет на листе!"
      Exit Sub
   End If
[/vba]
 
Ответить
СообщениеЯ делал так
[vba]
Код

   If Worksheets("Лист1").Cells.Find("Что ищем") Is Nothing Then
         MsgBox "Указанного текста нет на листе!"
      Exit Sub
   End If
[/vba]

Автор - keeper
Дата добавления - 23.01.2015 в 10:34
_Boroda_ Дата: Пятница, 23.01.2015, 10:54 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Можно вместо строки 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
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМожно вместо строки 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
[/vba]

Автор - _Boroda_
Дата добавления - 23.01.2015 в 10:54
leskris Дата: Пятница, 23.01.2015, 12:10 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 90
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016 (Office 365)
Второй вариант работает, первый все-равно выдает ошибку, спасибо за помощь, нигде не мог найти инфу про прерывание ошибки почему-то.
А можете подсказать причину, по которой моя строка не работает??? я вот думаю может даже когда ошибку не выдает, то код тоже работает не совсем корректно, но я не замечаю этого.
----------------
(Сори за офтоп: насчет оформления кода спецтегами, я просто не знаю этих тегов.. и прошлое замечание было по поводу того что я код выложил в виде скрина, сейчас же я просто выложил код..)


Сообщение отредактировал leskris - Пятница, 23.01.2015, 12:18
 
Ответить
СообщениеВторой вариант работает, первый все-равно выдает ошибку, спасибо за помощь, нигде не мог найти инфу про прерывание ошибки почему-то.
А можете подсказать причину, по которой моя строка не работает??? я вот думаю может даже когда ошибку не выдает, то код тоже работает не совсем корректно, но я не замечаю этого.
----------------
(Сори за офтоп: насчет оформления кода спецтегами, я просто не знаю этих тегов.. и прошлое замечание было по поводу того что я код выложил в виде скрина, сейчас же я просто выложил код..)

Автор - leskris
Дата добавления - 23.01.2015 в 12:10
SkyPro Дата: Пятница, 23.01.2015, 12:36 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
А разве метод Find работает на не активном листе?


skypro1111@gmail.com
 
Ответить
СообщениеА разве метод Find работает на не активном листе?

Автор - SkyPro
Дата добавления - 23.01.2015 в 12:36
leskris Дата: Пятница, 23.01.2015, 12:41 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 90
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016 (Office 365)
[vba]
Код

Worksheets(7).Visible = True
Worksheets(7).Range("user").find(UserForm2.TextBox_Login.Value, LookAt:=xlWhole).Select
[/vba]
а это разве не активирует лист??


Сообщение отредактировал leskris - Пятница, 23.01.2015, 12:42
 
Ответить
Сообщение[vba]
Код

Worksheets(7).Visible = True
Worksheets(7).Range("user").find(UserForm2.TextBox_Login.Value, LookAt:=xlWhole).Select
[/vba]
а это разве не активирует лист??

Автор - leskris
Дата добавления - 23.01.2015 в 12:41
RAN Дата: Пятница, 23.01.2015, 12:51 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Нет


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНет

Автор - RAN
Дата добавления - 23.01.2015 в 12:51
RAN Дата: Пятница, 23.01.2015, 12:55 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А разве метод Find работает на не активном листе?

Работает.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
А разве метод Find работает на не активном листе?

Работает.

Автор - RAN
Дата добавления - 23.01.2015 в 12:55
leskris Дата: Пятница, 23.01.2015, 13:54 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 90
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016 (Office 365)
Так все же кто-то знает почему та строка не работает так как я хочу?
 
Ответить
СообщениеТак все же кто-то знает почему та строка не работает так как я хочу?

Автор - leskris
Дата добавления - 23.01.2015 в 13:54
tsap Дата: Воскресенье, 25.01.2015, 00:36 | Сообщение № 10
Группа: Проверенные
Ранг: Участник
Сообщений: 60
Репутация: 6 ±
Замечаний: 0% ±

2013
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]




Сообщение отредактировал tsap - Воскресенье, 25.01.2015, 02:58
 
Ответить
Сообщение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]

Автор - tsap
Дата добавления - 25.01.2015 в 00:36
keeper Дата: Воскресенье, 25.01.2015, 22:08 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Правильно. Мой метод не работает на Excel 2007. Сразу не посмотрел, что у вас 2007. У меня с 2007-м excel тоже проблемы были. Поставил все обновки и все работает.
 
Ответить
СообщениеПравильно. Мой метод не работает на Excel 2007. Сразу не посмотрел, что у вас 2007. У меня с 2007-м excel тоже проблемы были. Поставил все обновки и все работает.

Автор - keeper
Дата добавления - 25.01.2015 в 22:08
leskris Дата: Вторник, 27.01.2015, 03:52 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 90
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016 (Office 365)

1) Вы не можете выполнить метод Select на НЕ активном листе. Решение - произведите активацию листа перед выбором ячейки, или же просто получите значение ячейки в переменную и не выбирайте ее
2) Лист Worksheets(7) это может быть и не тот лист, что надо на самом деле. Решение - проверьте чтобы не произошло никакой путаницы после скрытия листов.


Странно почему тогда программа не работала только если логина вообще не было, в остальных случаях все работало, думаю проблема в другом...
 
Ответить
Сообщение

1) Вы не можете выполнить метод Select на НЕ активном листе. Решение - произведите активацию листа перед выбором ячейки, или же просто получите значение ячейки в переменную и не выбирайте ее
2) Лист Worksheets(7) это может быть и не тот лист, что надо на самом деле. Решение - проверьте чтобы не произошло никакой путаницы после скрытия листов.


Странно почему тогда программа не работала только если логина вообще не было, в остальных случаях все работало, думаю проблема в другом...

Автор - leskris
Дата добавления - 27.01.2015 в 03:52
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выдает ошибку при обработки поиска ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!