Поиск в Exel

Программирование на Visual Basic for Applications
Vadimok
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 20:22

Поиск в Exel

Сообщение Vadimok » 11.07.2008 (Пт) 20:33

Вот код поиска введенного значения. Если введенное число есть он его находит, но если его нет я бы хотел что бы выводилось сообщение. А у меня сообщение выводится 4 раза по количеству строниц. Где мне поставить проверку, что бы все заработало нормально. Подскажите очень надо.

Код: Выделить всё
Sub Кнопка1_Щелчок()
Dim string1 As String
string1 = InputBox(Prompt:="Введите Инвентарный Номер:  ", Title:=" ") ' диалоговое окно
Dim i As Integer ' переменная лист
Dim j As Integer ' переменная строка

kod = Val(Left(Format(string1), 5)) 'делаю числовое значение с диалогового окна

For i = 1 To Worksheets.Count ' Worksheets.Count - все листы

If Left(Worksheets(i).Name, 1) = "&" Then ' выбирает дл проверки те листы, в которых есть знак &
j = 4

While Worksheets(i).Cells(j, 1) <> 0 'пока на листе ячейка не станет нулевой делать

If kod = Worksheets(i).Cells(j, 1) Then ' сравнивает код с данными в ячейке
'MsgBox "да"
Worksheets(i).Activate 'активизируем лист
ActiveSheet.Rows(j).Select 'выделяем строку
Else
MsgBox "no"
End If
j = j + 1

Wend
End If

Next


End Sub

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 11.07.2008 (Пт) 22:01

Код: Выделить всё
Sub test()
    Dim ws As Worksheet
    Dim rw As Range
    Dim kod As Single
   
    kod = Val(Left(InputBox(Prompt:="Введите Инвентарный Номер:  ", Title:=" "), 5))
    Application.ScreenUpdating=False
    For Each ws In Worksheets
        With ws
            If .Name Like "&*" Then
                On Error Resume Next
                Set rw = .Columns(1).Find(what:=kod, after:=.Cells(4, 1), lookat:=xlWhole).EntireRow
                On Error GoTo 0
                If Not rw Is Nothing Then
                    ws.Activate
                    rw.Select
                Else
                    MsgBox "No"
                End If
            End If
        End With
    Next ws
End Sub
Привет,
KL

Vadimok
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 20:22

Сообщение Vadimok » 11.07.2008 (Пт) 22:55

Это Visual Basic Application. Мне надо, что бы в EXEL`е работало.
Вот файлы в которых делавю поиск посмотри.
Вложения
Поиск.rar
(51.11 Кб) Скачиваний: 65

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.07.2008 (Пт) 23:35

Vadimok писал(а):Это Visual Basic Application. Мне надо, что бы в EXEL`е работало.

Во-первых, Excel. Во-вторых, определись, что тебе нужно.
Lasciate ogni speranza, voi ch'entrate.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 12.07.2008 (Сб) 0:54

Я явно не так себе представлял файл и задачу. Попробуй вот такой код:

Код: Выделить всё
Sub Кнопка1_Щелчок()
    Dim ws As Worksheet
    Dim rw As Range
    Dim kod As Single
   
    kod = Val(InputBox(Prompt:="Введите Инвентарный Номер:  ", Title:=" "))
    Application.ScreenUpdating = False
    For Each ws In Worksheets
        With ws
            If .Name Like "&*" Then
                On Error Resume Next
                Set rw = .Columns(1).Find(what:=kod, after:=.Cells(4, 1), lookat:=xlWhole).EntireRow
                On Error GoTo 0
                If Not rw Is Nothing Then
                    ws.Activate: rw.Select: GoTo Success
                End If
            End If
            Set rw = Nothing
        End With
    Next ws
    MsgBox "No"
Success:
End Sub
Привет,
KL

Vadimok
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 20:22

Сообщение Vadimok » 12.07.2008 (Сб) 6:04

Спасибо все работает. :D Скажи у тебя есть справка по VBA в EXEl, а то я начинающий и не все понимаю.

Vadimok
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 20:22

Сообщение Vadimok » 12.07.2008 (Сб) 6:04

Спасибо все работает. :D Скажи у тебя есть справка по VBA в EXEl, а то я начинающий и не все понимаю.

Vadimok
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 20:22

Сообщение Vadimok » 12.07.2008 (Сб) 6:05

Спасибо все работает. :D Скажи у тебя есть справка по VBA в EXEl, а то я начинающий и не все понимаю.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 12.07.2008 (Сб) 12:30

Да, у меня она есть и у тебя тоже должна быть. Открывается она из редактора VBA (Alt+F11) несколькими способами:

- Меню Help>Microsoft Visual Basic Help...
- просто клавиша F1
- выбираешь в коде искомое слово и затем клавиша F1
и т.д.
Привет,
KL

Vadimok
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 20:22

Сообщение Vadimok » 13.07.2008 (Вс) 4:58

Это то понятно. Просто я думал, может есть какая нибудь книга у тебя дополнительно. А то у меня с этим пока завал.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 13.07.2008 (Вс) 13:50

Если Справки Excel мало, то есть очень хорошая книжка Джона Уокенбаха (John Walkenbach) по программированию в Excel:

Microsoft Office Excel 2007. Профессиональное программирование на VBA
Привет,
KL


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList