Страницы: 1
RSS
Вывод сообщения при не найденных значениях
 
Добрый день.
Подскажите, пож-та, что не так с кодом.

Ниже представлен кусок кода. В Textbox вводим значение которое необходимо найти в столбце F. И ищем
Если значение не найдено, необходимо выводить сообщение об ошибке.
Однако если значение не найдено вываливается ошибка 91 на строку "Log_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activat"

Код
Private Sub CommandButton1_Click()
 Dim vRow As Long, vCol As Long
    Dim RowData As Long, ColData As Long
    Dim tmpNum As String
    Dim firstValue As Variant, find_kod As Variant
    Dim n_row As String
    Dim i As Long
    Dim BarCod As String
   Dim Row_F As Variant
    Dim oRange As Range
    Dim Log_F As String
    Dim Row_K As Variant
     Dim lRange As Range
     Dim Log_K As String
      
If TextBox1.Text <> "" Then
    BarCod = TextBox1.Text
Else
    VBA.MsgBox ("Ââåäèòå áàðêîä")
    Exit Sub
End If
  
   If TextBox1.Text <> "" Then 
           
       Set oRange = Workbooks("base.xlsm").Sheets("îáùèé ñïèñîê").Range("F:F")
        oRange.Select
        Row_F = ""
      
        Log_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
        If Log_F = True Then
 
        Row_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
       
        Else
        If TextBox1.Text <> "" Then
        VBA.MsgBox ("Øòðèõ-êîä íå íàéäåí!" & VBA.Chr(13) & "ÎÁÍÎÂÈÒÅ ÒÀÁËÈÖÓ!")
      Exit Sub
       End If
 
можно добавить обработку ошибок
перед строкой, где может возникнуть ошибка надо добавить
Код
On Error Resume Next

а после этой строки добавить проверку на ошибку
Код
    If Err.Number = 91 Then
        '...
    End If
    On Error GoTo 0

p.s. для того, что бы код копировался с кириллицей, надо перед копированием включить русский язык
 
webley спасибо. Но...
Не получается. Отрабатывает, ошибку больше не выдает, но и сообщение не выдает тоже.
Код
Private Sub CommandButton1_Click()
 Dim vRow As Long, vCol As Long
    Dim RowData As Long, ColData As Long
    Dim tmpNum As String
    Dim firstValue As Variant, find_kod As Variant
    Dim n_row As String
    Dim i As Long
    Dim BarCod As String
   Dim Row_F As Variant
    Dim oRange As Range
    Dim Log_F As String
    Dim Row_K As Variant
     Dim lRange As Range
     Dim Log_K As String
    
    If TextBox1.Text <> "" Then
    BarCod = TextBox1.Text
    Else
    VBA.MsgBox ("Введите баркод")
    Exit Sub
    End If
     
 If TextBox1.Text <> "" Then             
           
 Set oRange = Workbooks("base.xlsm").Sheets("общий список").Range("F:F")
 oRange.Select
 Row_F = ""
    
On Error Resume Next
        
Log_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
        
 If Log_F = True Then
 Row_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns,             
Else
If Err.Number = 91 Then
  
VBA.MsgBox ("Штрих-код не найден!" & VBA.Chr(13) & "ОБНОВИТЕ ТАБЛИЦУ!")
        
End If
On Error GoTo 0       
Exit Sub
 End If
 
а если попробовать If Err.Number <>0?
 
Тоже самое.... Не могу понять где ошибка...
 
Обычно так
Код
Set FoundValue=Диапазон.Find(......................)      
 If Not FoundValue Is Nothing Then
.... если нашли
Else
  Msgbox "Не нашли"
End If
 
вот так будет работать
Код
On Error Resume Next
Log_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Err.Number = 91 Then
    VBA.MsgBox ("Штрих-код не найден!" & VBA.Chr(13) & "ОБНОВИТЕ ТАБЛИЦУ!")
    Exit Sub
Else
    On Error GoTo 0
    Row_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
End If
 
Но у Kuzmich идея лучше
 
Kuzmic, webley огромное спасибо!
Последний вариант получился!

Спасибо!!

Получилось так:
Код
Private Sub CommandButton1_Click()
 Dim vRow As Long, vCol As Long
    Dim RowData As Long, ColData As Long
    Dim tmpNum As String
    Dim firstValue As Variant, find_kod As Variant
    Dim n_row As String
    Dim i As Long
    Dim BarCod As String
   Dim Row_F As Variant
    Dim oRange As Range
    Dim Log_F As String
    Dim Row_K As Variant
     Dim lRange As Range
     Dim Log_K As String
    
    If TextBox1.Text <> "" Then
    BarCod = TextBox1.Text
Else
    VBA.MsgBox ("Введите баркод")
    Exit Sub
End If

        If TextBox1.Text <> "" Then
             
       Set oRange = Workbooks("base.xlsm").Sheets("общий список").Range("F4:F250000")
        oRange.Select
        
    On Error Resume Next
        
    Log_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
   
    If Err.Number = 91 Then
    VBA.MsgBox ("Штрих-код не найден!" & VBA.Chr(13) & "ОБНОВИТЕ ТАБЛИЦУ!")
    Exit Sub
    Else
    On Error GoTo 0
    Row_F = oRange.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row    
       End If
Страницы: 1
Наверх