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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2011, 11:05   #1
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию Форма - поиск листа в книге

Здравствуйте, уважаемые!
Есть рабочая книга, калькуляции. Уже сейчас в ней 120 листов, дальше может быть еще больше. Для удобства поиска и перехода на нужный рабочий лист, сделал небольшую форму (использовал некоторые фрагменты кодов с форума, не могу уже сказать точно, у кого и что брал, так что пусть простят меня авторы, что не указываю копирайты )
Лист можно выбирать сразу из списка ListBox или же, когда листов много - в строке поиска.
А теперь собственно вопрос.
Для поиска я формирую список листов на листе "Рабочий" и все отлично работает, но можно ли избавиться от формирования этого списка на листе?
т.е. помещать ListBox1.List в переменную, массив и уже оттуда считывать данные для заполнения ListBox в процессе поиска?
Поиском по форуму похожего что-то не нашел (а может плохо искал))
Спасибо.
Вложения
Тип файла: zip Форма_ПоискЛиста.zip (13.6 Кб, 30 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 24.12.2011, 11:17   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Мне кажется так:
Код:
Option Explicit
Dim arrSh()

Private Sub UserForm_Initialize()
Dim i&, j&: j = ThisWorkbook.Sheets.Count
ReDim arrSh(1 To j)
For i = 1 To j
    arrSh(i) = Sheets(i).Name
Next
Me.ListBox1.List = arrSh
End Sub

Private Sub ListBox1_Click()
Sheets(ListBox1.Value).Select
Me.Caption = ActiveSheet.Name
End Sub

Private Sub TextBox1_Change()
Dim i&: Me.ListBox1.Clear
If Len(TextBox1) = 0 Then Exit Sub
For i = 1 To UBound(arrSh)
    If UCase(arrSh(i)) Like "*" & UCase(Me.TextBox1) & "*" Then Me.ListBox1.AddItem arrSh(i)
Next i
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Unload Me
End Sub

Private Sub cb_OK_Click()
Unload Me
End Sub
Кнопка "Обновить" вроде бы и не нужна.

Последний раз редактировалось nilem; 24.12.2011 в 11:50.
nilem вне форума Ответить с цитированием
Старый 24.12.2011, 12:10   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вить, мож тебя такой вариант заинтересует. Комбы на листе и на панели инструментов.
Вложения
Тип файла: rar ListSheets.rar (12.1 Кб, 33 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 24.12.2011, 13:34   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

nilem, kuklp большое спасибо!
Буду сейчас пробовать.
Цитата:
Кнопка "Обновить" вроде бы и не нужна.
Да эта кнопка у меня собственно для того, чтобы можно было перейти из режима поиска в текстбоксе к полному списку листов. Скорее всего она потом исчезнет))
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 24.12.2011, 13:40   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

nilem это именно то, что я хотел!!! Спасибо большое за код и за науку))
kuklp очень интересное решение. В копилку!


P.S. Это, скорее всего, модераторам:
Почему-то "весы" не срабатывают.
Пишет "сначала добавьте отзыв другому пользователю", хотя я уже добавлял "другому"
Причем это уже не первый раз такое у меня
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 24.12.2011 в 13:46. Причина: Некорректтно работает "добавить отзыв" на форуме
VictorM вне форума Ответить с цитированием
Старый 24.12.2011, 13:40   #6
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

VictorM, здравствуйте. Может подойдет ваш ответ на Оглавление для книги на форме
agregator вне форума Ответить с цитированием
Старый 24.12.2011, 13:55   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Да, это один из первых вариантов был у меня, и до последнего времени он меня тоже вполне устраивал. А сейчас вот назрела необходимость в такой форме которая рассматривается в топике.
Листы катастрофически быстро добавляются
Трудно стало искать по списку, вот и решил сделать с поиском.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для создания нового листа в др.книге natty29 Microsoft Office Excel 3 14.02.2009 06:46
Поиск по книге PIKA4Y Microsoft Office Excel 5 03.02.2009 20:23
поиск листа в книге tat-besidovska Microsoft Office Excel 1 12.02.2008 11:00
Поиск в книге Andr Microsoft Office Excel 1 20.11.2007 21:47
Поиск в книге asale Microsoft Office Excel 7 26.01.2007 07:29