Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/47: Рейтинг темы: голосов - 47, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 20
1

Как написать поиск по всем листам

27.03.2014, 15:31. Показов 8636. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При нажатии на кнопку поиск пользователь вводит часть фразы или код,происходит поиск по всем листам и выводит результат.пользователь нажимает то что что он выбирал и автоматически перебрасывает его на ячейку с его результатом. КГ.xlsx

Попыталась так.но не получается.Помогите
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub CommandButton2_Click()
Dim n As String
n = InputBox("Введите слово")
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
For r = 1 To Selection.Rows.Count
Next r
 
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2014, 15:31
Ответы с готовыми решениями:

Поиск по всем листам
В VB почти нечего не шарю...говорю сразу) Проблема: нужно сделать поиск ячейки в определенном...

БД в Excel: организовать поиск по всем листам и по нескольким критериям
Добрый вечерок! Помогите, пожалуйста.... Есть база данных в Excel. Пока использовалась...

Поиск по столбцу A:A по всем листам документа кроме первого
Здравствуйте! имею код поиска заданного значения по столбцу активного листа, Dim...

Произвести поиск по всем листам определённого слова в определенном столбце
Помогите плиз Задачка - в ёкселе провести поиск по всем листам для поиска определённого слова в...

7
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
27.03.2014, 16:08 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Поиск()
 
n = InputBox("Введите слово")
found = False
 
For Each wsh In ThisWorkbook.Worksheets
    On Error Resume Next
        wsh.Select
        wsh.Range(wsh.Cells(2, 1), wsh.Cells(65536, 256)).Find(n).Activate
        
        If Err = 0 Then
            found = True
            Exit For
        Else
            Err.Clear
        End If
    On Error GoTo 0
Next
 
If Not found Then
    ThisWorkbook.Worksheets(1).Activate
    MsgBox ("Не найдено!")
End If
    
 
End Sub
0
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 20
27.03.2014, 16:20  [ТС] 3
korvindeson,ага.а если сделать только по столбцам С,I,O
0
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 20
27.03.2014, 16:27  [ТС] 4
Возможно это бред. Я не знаю.Но помогите пожалуйства мне
PureBasic
1
2
3
4
5
6
7
8
9
10
Private Sub CommandButton2_Click()
Dim n As String
n = InputBox("Введите слово")
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
For r = 1 To Selection.Rows.Count
If Cells(r + 1, 1) = n Then Worksheets.Open
Next r
 
End Sub
Добавлено через 1 час 33 минуты
Как сделать что бы поиск был только по столбцам С,I,O
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
n = InputBox("Введите слово")
found = False
 
For Each wsh In ThisWorkbook.Worksheets
    On Error Resume Next
        wsh.Select
        wsh.Range(wsh.Cells(2, 1), wsh.Cells(65536, 256)).Find(n).Activate
        
        If Err = 0 Then
            found = True
            Exit For
        Else
            Err.Clear
        End If
    On Error GoTo 0
Next
 
If Not found Then
    ThisWorkbook.Worksheets(1).Activate
    MsgBox ("Не найдено!")
End If
0
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
27.03.2014, 17:19 5
В принципе, можно без цикла по листам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub bb()
Dim ac As Range
Set ac = ActiveCell
Worksheets.Select
Range("C:C,I:I,O:O").Select
On Error Resume Next
Selection.Find(InputBox("Введите слово"), , xlFormulas, xlPart).Select
If Err Then
  ac.Parent.Activate
  ac.Select
  MsgBox "Не найдено"
End If
End Sub
Правда, столбцы остаются выделенными на других листах.
0
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 20
28.03.2014, 20:19  [ТС] 6
всё таки наверное надо форму сделать.с объектами. пользователю не удобно будет искать.так и так будет нажимать ctrl+f

Добавлено через 18 минут
Создала форму.поместила TextBox и ListBox. и кнопку. думаю пользователь вводит часть слова и результат поиска выводиться на ListBox.

Добавлено через 7 минут
а если поместить на кнопку макрос

Добавлено через 26 секунд
что и как лучше сделать!?

Добавлено через 2 часа 6 минут
НАподоби этого необходимо мне.Но эта программа ищет только на одном листе
Visual Basic
1
2
3
4
Private Sub ListBox1_Click()
    If ListBox1.ListIndex = -1 Then Exit Sub
    Cells(ListBox1.Value, 1).Select
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub TextBox1_Change()
Dim j As Long, i As Long
ListBox1.Clear
'при отсутствии символов для поиска - выход
   If Len(TextBox1.Value) = 0 Then Exit Sub   
   j = 0
'для одного символа поиск осуществляем по первой букве
If Len(TextBox1.Value) = 1 Then
    For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row
        If UCase(Left(Cells(i, 1), 1)) = UCase(TextBox1.Value) Then
            ListBox1.AddItem i
            ListBox1.List(j, 1) = Cells(i, 1)
            j = j + 1
        End If
    Next i
    'если найден только один эл-т, то переходим к нему
    If j = 1 Then Cells(ListBox1.List(0, 0), 1).Select
    Exit Sub
End If 
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row
    If InStr(1, UCase(Cells(i, 1)), UCase(TextBox1.Value)) > 0 Then
       ListBox1.AddItem i
       ListBox1.List(j, 1) = Cells(i, 1)
       j = j + 1
    End If
Next i
   'если найден только один эл-т, то переходим к нему
   If j = 1 Then Cells(ListBox1.List(0, 0), 1).Select
End Sub
Добавлено через 5 часов 41 минуту
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub TextBox1_Change()
    ListBox1.Clear
    
    Dim iText$, iAddress$, iCount&, iList As Worksheet, iCell As Range
    iText = TextBox1.Value
    
    If iText <> "" Then 'If Len(iText) > 0
       For Each iList In ThisWorkbook.Worksheets
           Set iCell = iList.UsedRange.Find(iText, , xlValues, xlPart)
           If Not iCell Is Nothing Then
              iAddress = iCell.Address
              Do
                   ListBox1.AddItem
                   ListBox1.List(iCount, 0) = iCell.Value
                   ListBox1.List(iCount, 1) = iCell.Address(, , , True)
                   iCount = iCount + 1
              Loop While iCell.Address <> iAddress
           End If
       Next
    End If
End Sub
 
Private Sub ListBox1_Click()
    If ListBox1.ListIndex > -1 Then
       Application.Goto Application.Range(ListBox1.List(ListBox1.ListIndex, 1))
    End If
End Sub
как сузить поиск.по всем листам но только по столбцам C,I,O
0
Модератор
Эксперт MS Access
12059 / 4921 / 789
Регистрация: 07.08.2010
Сообщений: 14,399
Записей в блоге: 4
29.03.2014, 07:12 7
ОБЫЧНО
применяю занесение результатов поиска в рабочий лист

е2007
Вложения
Тип файла: zip КомандыVBA.zip (22.1 Кб, 73 просмотров)
0
Модератор
Эксперт MS Access
12059 / 4921 / 789
Регистрация: 07.08.2010
Сообщений: 14,399
Записей в блоге: 4
29.03.2014, 08:04 8
на закомменченный код не смотрите--режим отладки

е2003
Вложения
Тип файла: zip КомандыVBA2003.zip (17.9 Кб, 73 просмотров)
0
29.03.2014, 08:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2014, 08:04
Помогаю со студенческими работами здесь

Поиск значений по всем листам книги и вывод имени листа/столбца для всех совпадений
Всем здравствуйте. Прошу помощи профессионалов. Прикрепил файл, Есть задача - необходимо сделать...

Как осуществить поиск по всей книге (по всем листам сразу)?
Очень нужно!

Пройтись по всем листам Excel
Всем привет. Возник вопрос, как пройтись по всем листам Excel,листов 12 Спасибо.

Проверка по всем листам книги
Здравствуйте у меня возникла проблемка , с vba я на вы , имеется макрос который делает проверку по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru