Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2011, 11:36   #1
Keshunya
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 33
По умолчанию Поиск кодом

Здравствуйте, уважаемые программисты. Прошу помочь мне в поиске договора. Нужно через код осуществить поиск, проблема вот в чем: Если договора нет, должен ответить "договор не найден", если договор есть, ответ: "договор найден". Как с помощью кода поставить условие. Крутила, мудрила, искала решение, вот что вышло:
Sub Поиск_договора()
Dim Sales
Sales = InputBox(Prompt:="Введите номер договора")
If Sales = "" Then Exit Sub
ActiveSheet.Select
On Error Resume Next
If Cells.Find(What:=Sales) Then
Cells.Find(What:=Sales).Activate
MsgBox "Договор найден"
Else
MsgBox "Нет такого договора"
End If
End Sub
Как мне присвоить условие переменной, чтобы правильно реагировал на запрос? Спасибо вам, дорогие, что не обходите вниманием!
Вложения
Тип файла: rar поиск.rar (10.5 Кб, 13 просмотров)
Keshunya вне форума Ответить с цитированием
Старый 29.06.2011, 12:07   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Такой вариант. Активацию листа убрал - кнопка и так на нём, код тоже в нём...
Код:
Sub Поиск_договора()
        Dim Sales, x As Range
 Sales = InputBox(Prompt:="Введите номер договора")
If Sales = "" Then Exit Sub
Set x = Cells.Find(What:=Sales)
If Not x Is Nothing Then
x.Activate
MsgBox "Договор найден"
Else
MsgBox "Нет такого договора"
End If

End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.06.2011, 12:18   #3
Keshunya
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 33
По умолчанию

Спасибо огромное! Вот с иксом не совсем понятно, попробую разобраться. Но ведь работает! Супер просто!
Keshunya вне форума Ответить с цитированием
Старый 29.06.2011, 12:21   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да что там - иксу присваивается ссылка на найденную ячейку. Если присвоилось - значит нашли, если всё ещё Nothing - значит нет.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.06.2011, 12:33   #5
Djeki
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 136
Вопрос

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Такой вариант. Активацию листа убрал - кнопка и так на нём, код тоже в нём...
Код:
Sub Поиск_договора()
        Dim Sales, x As Range
 Sales = InputBox(Prompt:="Введите номер договора")
If Sales = "" Then Exit Sub
Set x = Cells.Find(What:=Sales)
If Not x Is Nothing Then
x.Activate
MsgBox "Договор найден"
Else
MsgBox "Нет такого договора"
End If

End Sub
Подскажите пожалуста как продолжить поиск по столбцам В и С до конца этого диапазона "В:С" ?? Т.е. номер договора может встречать несколько раз и надо их все найти. Спасибо за ответ..
Djeki вне форума Ответить с цитированием
Старый 29.06.2011, 12:46   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Это посложнее, сейчас некогда код сочинять... Помогайте
Но сделать можно, через FindNext и Msgbox с vbYesNoCancel + vbQuestion

Пример:
Код:
            Select Case MsgBox("Удалить имя диапазона:" & vbCrLf & vbCrLf _
                               & nM.Name & nM.RefersTo, vbYesNoCancel + vbQuestion)
               Case vbYes: nM.Delete
               Case vbCancel: Exit Sub
            End Select
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.06.2011 в 12:50.
Hugo121 вне форума Ответить с цитированием
Старый 29.06.2011, 13:18   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну вот, вроде скомпоновал
Код:
Sub Поиск_договора()
        Dim Sales, x As Range
 Sales = InputBox(Prompt:="Введите номер договора")
If Sales = "" Then Exit Sub
Set x = Cells.Find(What:=Sales)
If Not x Is Nothing Then
Do
x.Activate
            
            Select Case MsgBox("Договор найден." & vbCrLf & "Годится - " _
                               & x.Address & " ?", vbYesNoCancel + vbQuestion)
               Case vbYes: x.Activate: Exit Do
               Case vbCancel: [c2].Activate: Exit Sub
            End Select

Set x = Cells.FindNext(After:=x)
Loop While Not x Is Nothing
Else
MsgBox "Нет такого договора"
End If

End Sub
Хотя в данном случае While Not x Is Nothing лишнее, можно закомментировать

Код:
Loop ' While Not x Is Nothing
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.06.2011 в 13:23.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разобраться с кодом - поиск палиндрома mamant1 Помощь студентам 0 09.12.2009 20:06
Помогите с кодом eu8cc Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 12 07.06.2009 01:05
Проблема с кодом( DM_bite Помощь студентам 3 02.08.2008 20:02
Что с кодом ? Look Общие вопросы C/C++ 11 06.11.2007 14:48