Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск в видимых строках/ячейках - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск в видимых строках/ячейках (Макросы/Sub)
Поиск в видимых строках/ячейках
AlexVBA Дата: Понедельник, 24.10.2022, 12:06 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Всем доброго времени, не могу дописать код.
Есть задача, иногда дописывать значения в в столбце О в соответствии с строкой.
Помню что Find вроде как и находит значение не скрытых строк. Для этого прописал цикл который скрывает по столбцу О строки где имеются значения в столбце О. Далее в textbox2 начинаю вводить необходимое мне значение (поиск по столбцу С) и по задумке, в листбокс должны отображаться только значения только не скрытых строк. А выходит что Find "находит" значения и скрытых строк.
Как можно решить эту "проблему", что бы поиск осуществлялся по столбцу С и в лист бокс записывались значения только не скрытых строк.
Всем спасибо
К сообщению приложен файл: 8166548.xls(115.0 Kb)
 
Ответить
СообщениеВсем доброго времени, не могу дописать код.
Есть задача, иногда дописывать значения в в столбце О в соответствии с строкой.
Помню что Find вроде как и находит значение не скрытых строк. Для этого прописал цикл который скрывает по столбцу О строки где имеются значения в столбце О. Далее в textbox2 начинаю вводить необходимое мне значение (поиск по столбцу С) и по задумке, в листбокс должны отображаться только значения только не скрытых строк. А выходит что Find "находит" значения и скрытых строк.
Как можно решить эту "проблему", что бы поиск осуществлялся по столбцу С и в лист бокс записывались значения только не скрытых строк.
Всем спасибо

Автор - AlexVBA
Дата добавления - 24.10.2022 в 12:06
Kuzmich Дата: Понедельник, 24.10.2022, 12:39 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
Цитата
в лист бокс записывались значения только не скрытых строк.

Допишите в диапазоны, где у вас функция Find
[vba]
Код
Set r1 = Range("c1:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
[/vba]
 
Ответить
Сообщение
Цитата
в лист бокс записывались значения только не скрытых строк.

Допишите в диапазоны, где у вас функция Find
[vba]
Код
Set r1 = Range("c1:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
[/vba]

Автор - Kuzmich
Дата добавления - 24.10.2022 в 12:39
AlexVBA Дата: Понедельник, 24.10.2022, 13:42 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Допишите в диапазоны, где у вас функция Find

Все равно отображает и скрытые.
[vba]
Код
Private Sub ListBox1_Click()
Dim r1 As Range, r2 As Range
    If ListBox1.ListIndex = -1 Then Exit Sub
    Set r1 = Range("c1:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
    If r1.Row = 2 Then
    Set r2 = Range("c1:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
       If r2.Row = 2 Then
       Cells(ListBox1.ListIndex + 1, 3).Select
       Else
       Cells(ListBox1.ListIndex + r2.Row, 3).Select
       End If
    Else
    Set r2 = Range("C" & r1.Row + 2 & ":C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
    Cells(ListBox1.ListIndex + r2.Row, 3).Select
    End If
End Sub
[/vba]
Так вы имели ввиду?
И селект не могу сфокусировать на нужную ячейку.


Сообщение отредактировал AlexVBA - Понедельник, 24.10.2022, 13:51
 
Ответить
Сообщение
Допишите в диапазоны, где у вас функция Find

Все равно отображает и скрытые.
[vba]
Код
Private Sub ListBox1_Click()
Dim r1 As Range, r2 As Range
    If ListBox1.ListIndex = -1 Then Exit Sub
    Set r1 = Range("c1:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
    If r1.Row = 2 Then
    Set r2 = Range("c1:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
       If r2.Row = 2 Then
       Cells(ListBox1.ListIndex + 1, 3).Select
       Else
       Cells(ListBox1.ListIndex + r2.Row, 3).Select
       End If
    Else
    Set r2 = Range("C" & r1.Row + 2 & ":C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
    Cells(ListBox1.ListIndex + r2.Row, 3).Select
    End If
End Sub
[/vba]
Так вы имели ввиду?
И селект не могу сфокусировать на нужную ячейку.

Автор - AlexVBA
Дата добавления - 24.10.2022 в 13:42
Kuzmich Дата: Понедельник, 24.10.2022, 13:44 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
Так еще есть
[vba]
Код
With Range("C1:c10000" & lastrow).SpecialCells(xlCellTypeVisible)
[/vba]
 
Ответить
СообщениеТак еще есть
[vba]
Код
With Range("C1:c10000" & lastrow).SpecialCells(xlCellTypeVisible)
[/vba]

Автор - Kuzmich
Дата добавления - 24.10.2022 в 13:44
AlexVBA Дата: Понедельник, 24.10.2022, 13:53 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Так еще есть

Прописывал, выпадало в ошибку... снова прописал, кажись супер)
Подскажите пожалуйста по селекту.
при "сворачивании" не верно работает.
 
Ответить
Сообщение
Так еще есть

Прописывал, выпадало в ошибку... снова прописал, кажись супер)
Подскажите пожалуйста по селекту.
при "сворачивании" не верно работает.

Автор - AlexVBA
Дата добавления - 24.10.2022 в 13:53
Kuzmich Дата: Понедельник, 24.10.2022, 14:20 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
Цитата
при "сворачивании" не верно работает.

У вас в ячейке С5 значение А1, вот эту единицу функция Find и находит.
Попробуйте выбрать диапазон для поиска
[vba]
Код
    Set r1 = Range("c7:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
    If r1.Row = 8 Then
    Set r2 = Range("c7:c1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
       If r2.Row = 8 Then
         Cells(ListBox1.ListIndex + 8, 3).Select
[/vba]
 
Ответить
Сообщение
Цитата
при "сворачивании" не верно работает.

У вас в ячейке С5 значение А1, вот эту единицу функция Find и находит.
Попробуйте выбрать диапазон для поиска
[vba]
Код
    Set r1 = Range("c7:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
    If r1.Row = 8 Then
    Set r2 = Range("c7:c1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
       If r2.Row = 8 Then
         Cells(ListBox1.ListIndex + 8, 3).Select
[/vba]

Автор - Kuzmich
Дата добавления - 24.10.2022 в 14:20
AlexVBA Дата: Понедельник, 24.10.2022, 17:17 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Попробуйте выбрать диапазон для поиска

Ничего не изменилось. Выбирает четко до начала скрытых строк. Дальше стоит на месте ^_^
 
Ответить
Сообщение
Попробуйте выбрать диапазон для поиска

Ничего не изменилось. Выбирает четко до начала скрытых строк. Дальше стоит на месте ^_^

Автор - AlexVBA
Дата добавления - 24.10.2022 в 17:17
Kuzmich Дата: Понедельник, 24.10.2022, 19:19 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
В программе Private Sub TextBox2_Change()
что означают переменные, которые не определены,
lastrow и chbxPart
 
Ответить
СообщениеВ программе Private Sub TextBox2_Change()
что означают переменные, которые не определены,
lastrow и chbxPart

Автор - Kuzmich
Дата добавления - 24.10.2022 в 19:19
AlexVBA Дата: Понедельник, 24.10.2022, 20:35 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

что означают переменные, которые не определены

lastrow не убрал, вариаций пробовал массу
chbxPart не нашел этой
 
Ответить
Сообщение
что означают переменные, которые не определены

lastrow не убрал, вариаций пробовал массу
chbxPart не нашел этой

Автор - AlexVBA
Дата добавления - 24.10.2022 в 20:35
Kuzmich Дата: Понедельник, 24.10.2022, 20:50 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Set rng = .Find(Me.TextBox2.Value, , , Abs(Abs(chbxPart + 1) + 1))
[/vba]
 
Ответить
Сообщение[vba]
Код
Set rng = .Find(Me.TextBox2.Value, , , Abs(Abs(chbxPart + 1) + 1))
[/vba]

Автор - Kuzmich
Дата добавления - 24.10.2022 в 20:50
AlexVBA Дата: Понедельник, 24.10.2022, 20:57 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Set rng = .Find(Me.TextBox2.Value, , , Abs(Abs(chbxPart + 1) + 1))

Прошу прощения, уже эта строка выглядит по другому.
[vba]
Код
Set rng = Range("c7:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
[/vba]
 
Ответить
Сообщение
Set rng = .Find(Me.TextBox2.Value, , , Abs(Abs(chbxPart + 1) + 1))

Прошу прощения, уже эта строка выглядит по другому.
[vba]
Код
Set rng = Range("c7:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)
[/vba]

Автор - AlexVBA
Дата добавления - 24.10.2022 в 20:57
Kuzmich Дата: Понедельник, 24.10.2022, 21:39 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
Почему в Private Sub ListBox1_Click()
в поиске (Find) стоит аргумент TextBox2.Text, а не ListBox1.Text
 
Ответить
СообщениеПочему в Private Sub ListBox1_Click()
в поиске (Find) стоит аргумент TextBox2.Text, а не ListBox1.Text

Автор - Kuzmich
Дата добавления - 24.10.2022 в 21:39
AlexVBA Дата: Понедельник, 24.10.2022, 21:50 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

вот что получилось с селектом, не корректно он работает...не пойму как он вообще работает....криво вообщем.
Ваши замечания исправил,
К сообщению приложен файл: 8279208.xls(114.5 Kb)
 
Ответить
Сообщениевот что получилось с селектом, не корректно он работает...не пойму как он вообще работает....криво вообщем.
Ваши замечания исправил,

Автор - AlexVBA
Дата добавления - 24.10.2022 в 21:50
Kuzmich Дата: Понедельник, 24.10.2022, 21:53 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
Посмотрите, может так надо
К сообщению приложен файл: 8166548_ver1.xls(107.0 Kb)
 
Ответить
СообщениеПосмотрите, может так надо

Автор - Kuzmich
Дата добавления - 24.10.2022 в 21:53
AlexVBA Дата: Понедельник, 24.10.2022, 21:57 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Посмотрите, может так надо

Да, но селект не корректно тоже работает или же он выделяет все?
Правда, запутался уже.
 
Ответить
Сообщение
Посмотрите, может так надо

Да, но селект не корректно тоже работает или же он выделяет все?
Правда, запутался уже.

Автор - AlexVBA
Дата добавления - 24.10.2022 в 21:57
Kuzmich Дата: Понедельник, 24.10.2022, 22:31 | Сообщение № 16
Группа: Проверенные
Ранг: Ветеран
Сообщений: 700
Репутация: 152 ±
Замечаний: 0% ±

Excel 2003
До этого особо не вникал в логику работы, но вот посмотрел и есть вопрос,
зачем используется две переменные r1 и r2
Убираем r2
[vba]
Код
Private Sub ListBox1_Click()
Dim r1 As Range, r2 As Range
    If ListBox1.ListIndex = -1 Then Exit Sub
    Set r1 = Range("c7:C1000").SpecialCells(xlCellTypeVisible).Find(ListBox1.Text)
      Cells(r1.Row, 3).Select
End Sub
[/vba]
 
Ответить
СообщениеДо этого особо не вникал в логику работы, но вот посмотрел и есть вопрос,
зачем используется две переменные r1 и r2
Убираем r2
[vba]
Код
Private Sub ListBox1_Click()
Dim r1 As Range, r2 As Range
    If ListBox1.ListIndex = -1 Then Exit Sub
    Set r1 = Range("c7:C1000").SpecialCells(xlCellTypeVisible).Find(ListBox1.Text)
      Cells(r1.Row, 3).Select
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 24.10.2022 в 22:31
AlexVBA Дата: Вторник, 25.10.2022, 08:49 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

зачем используется две переменные r1 и r2

В немного ранее проэкт делал, поиск был по трем столбцам. Поэтому переправил на один(ну типа зачем мучатся) оказалось есть зачем(
Благодарен вам, все заработало.
Очень вам благодарен.
Хорошего дня)
 
Ответить
Сообщение
зачем используется две переменные r1 и r2

В немного ранее проэкт делал, поиск был по трем столбцам. Поэтому переправил на один(ну типа зачем мучатся) оказалось есть зачем(
Благодарен вам, все заработало.
Очень вам благодарен.
Хорошего дня)

Автор - AlexVBA
Дата добавления - 25.10.2022 в 08:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск в видимых строках/ячейках (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2022 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!