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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2016, 02:21   #1
Z0RGE
Пользователь
 
Регистрация: 13.02.2015
Сообщений: 48
По умолчанию Очень нужна помощь! (Что-то типа базы данных/Справочника)

Добрый день!
Недавно (дня 3) начал изучать VBA программирование, решил на работе сделать справочник с телефонами и т.п. (Пример прилагаю)

Столкнулся со следующими проблемами:
1) Вложенный файл, вроде, работает - ищет и показывает необходимые данные, но если я добавляю в код ...Else... то работать перестает... что-то не так делаю...
2) Если я дописываю вначале модуля Option Explicid - тоже перестает работать...

Посмотрите, пожалуйста, вложенный файл, подскажите, как переделать код, чтобы работало условие If, Then, Else.
В итоге нужно, чтобы при выборе в UserForm'е нужного номера (который есть в листе "Данные") из выпадающего списка или набиванием вручную - появлялась необходимая информация (информация находится на листе "Данные"), а в случае, если ввести номер, которого нет в данных - в форме отражались пустые графы...

Заранее благодарю.
Вложения
Тип файла: rar Поисковик.rar (136.0 Кб, 28 просмотров)
Z0RGE вне форума Ответить с цитированием
Старый 14.02.2016, 14:55   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

2. потому что Option Explicit
1. а что пишешь в если. там надо проверять после цикла і найдено ли совпадение. в цикле else не сработает.

или попробуй вариант
Код:
Sub poisk2()
    Dim c As Range, i As Integer, ctrl As Object
    With Worksheets(2).Range("A1:A6500")
        Set c = .Find(What:=UserForm1.BoxVSP.Text, _
                      after:=.Cells(.Cells.Count), _
                      LookIn:=xlValues, _
                      lookat:=xlPart, _
                      searchorder:=xlByRows, _
                      searchdirection:=xlNext, _
                      MatchCase:=False)
        If Not c Is Nothing Then
            i = c.Row
            UserForm1.BoxOtdelenie.Text = Sheets(2).Cells(i, 2)
            UserForm1.BoxOPP.Text = Sheets(2).Cells(i, 3)
            UserForm1.BoxIndex.Text = Sheets(2).Cells(i, 4)
            UserForm1.BoxNasPunkt.Text = Sheets(2).Cells(i, 5)
            UserForm1.BoxUlica.Text = Sheets(2).Cells(i, 6)
            UserForm1.BoxDom.Text = Sheets(2).Cells(i, 7)
            UserForm1.BoxSegment.Text = Sheets(2).Cells(i, 8)
            UserForm1.BoxTerritoria.Text = Sheets(2).Cells(i, 9)
            UserForm1.BoxRO.Text = Sheets(2).Cells(i, 10)
            UserForm1.BoxFIORO.Text = Sheets(2).Cells(i, 11)
            UserForm1.BoxTelRO.Text = Sheets(2).Cells(i, 12)
            UserForm1.BoxZRO.Text = Sheets(2).Cells(i, 13)
            UserForm1.BoxFIOZRO.Text = Sheets(2).Cells(i, 14)
            UserForm1.BoxTelZRO.Text = Sheets(2).Cells(i, 15)
            UserForm1.BoxTelVSP.Text = Sheets(2).Cells(i, 16)
            UserForm1.BoxMailVSP.Text = Sheets(2).Cells(i, 17)
            UserForm1.BoxDays.Text = Sheets(2).Cells(i, 18)
            UserForm1.BoxTime.Text = Sheets(2).Cells(i, 19)
            UserForm1.BoxOdnoruk.Text = Sheets(2).Cells(i, 20)
            UserForm1.BoxShtat.Text = Sheets(2).Cells(i, 21)
            UserForm1.BoxFL.Text = Sheets(2).Cells(i, 22)
            UserForm1.BoxUL.Text = Sheets(2).Cells(i, 23)
            UserForm1.BoxComments.Text = Sheets(2).Cells(i, 26)
            UserForm1.BoxKIC.Text = Sheets(2).Cells(i, 27)
            UserForm1.BoxNachKIC.Text = Sheets(2).Cells(i, 28)
            UserForm1.BoxTelKIC.Text = Sheets(2).Cells(i, 29)
            UserForm1.BoxOPiOVSP.Text = Sheets(2).Cells(i, 30)
            UserForm1.BoxTelOPiOVSP.Text = Sheets(2).Cells(i, 31)
            UserForm1.BoxORGO.Text = Sheets(2).Cells(i, 32)
            UserForm1.BoxTelORGO.Text = Sheets(2).Cells(i, 33)
            UserForm1.BoxUPR.Text = Sheets(2).Cells(i, 34)
            UserForm1.BoxTelUPR.Text = Sheets(2).Cells(i, 35)
            UserForm1.BoxOSKR.Text = Sheets(2).Cells(i, 36)
            UserForm1.BoxTelOSKR.Text = Sheets(2).Cells(i, 37)
        Else
            For Each ctrl In UserForm1.Controls
                If TypeName(ctrl) = "TextBox" Then
                    ctrl.Text = ""
                End If
            Next ctrl
        End If
    End With
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.02.2016, 21:29   #3
Z0RGE
Пользователь
 
Регистрация: 13.02.2015
Сообщений: 48
По умолчанию

Большое спасибо - разобрался!
Z0RGE вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С + + очень нужна помощь с типы данных (структуры и объединения) Мироослав Помощь студентам 2 14.01.2014 21:50
Очень нужна книга базы данных Delphi 7 stscolt Помощь студентам 1 27.07.2009 19:03
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Нужна помощь в создании базы данных IT Expence lisaniel Microsoft Office Access 1 29.06.2009 16:32
Очень нужна Ваша помощь девушке с базами данных! ElviraPGTU Microsoft Office Access 0 26.05.2009 03:55