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

 

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

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Поиск в видимых строках/ячейках
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
Группа: Проверенные
Ранг: Ветеран
Сообщений: 715
Репутация: 157 ±
Замечаний: 0% ±

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

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

Set r1 = Range("c1:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)

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

Допишите в диапазоны, где у вас функция 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% ±

Цитата Kuzmich, 24.10.2022 в 12:39, в сообщении № 2 ( писал(а)):
Допишите в диапазоны, где у вас функция Find

Все равно отображает и скрытые.

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


Так вы имели ввиду?
И селект не могу сфокусировать на нужную ячейку.


Сообщение отредактировал AlexVBA - Понедельник, 24.10.2022, 13:51
 
Ответить
Сообщение
Цитата Kuzmich, 24.10.2022 в 12:39, в сообщении № 2 ( писал(а)):
Допишите в диапазоны, где у вас функция 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 IfEnd Sub
[/vba]
Так вы имели ввиду?
И селект не могу сфокусировать на нужную ячейку.

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

Excel 2003
Так еще есть

With Range("C1:c10000" & lastrow).SpecialCells(xlCellTypeVisible)

 
Ответить
СообщениеТак еще есть
[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% ±

Цитата Kuzmich, 24.10.2022 в 13:44, в сообщении № 4 ( писал(а)):
Так еще есть

Прописывал, выпадало в ошибку... снова прописал, кажись супер)
Подскажите пожалуйста по селекту.
при "сворачивании" не верно работает.
 
Ответить
Сообщение
Цитата Kuzmich, 24.10.2022 в 13:44, в сообщении № 4 ( писал(а)):
Так еще есть

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

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

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

У вас в ячейке С5 значение А1, вот эту единицу функция Find и находит.
Попробуйте выбрать диапазон для поиска

    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

 
Ответить
Сообщение
Цитата
при "сворачивании" не верно работает.

У вас в ячейке С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% ±

Цитата Kuzmich, 24.10.2022 в 14:20, в сообщении № 6 ( писал(а)):
Попробуйте выбрать диапазон для поиска

Ничего не изменилось. Выбирает четко до начала скрытых строк. Дальше стоит на месте ^_^
 
Ответить
Сообщение
Цитата Kuzmich, 24.10.2022 в 14:20, в сообщении № 6 ( писал(а)):
Попробуйте выбрать диапазон для поиска

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

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

Цитата Kuzmich, 24.10.2022 в 19:19, в сообщении № 8 ( писал(а)):
что означают переменные, которые не определены

lastrow не убрал, вариаций пробовал массу
chbxPart не нашел этой
 
Ответить
Сообщение
Цитата Kuzmich, 24.10.2022 в 19:19, в сообщении № 8 ( писал(а)):
что означают переменные, которые не определены

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

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

Excel 2003

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

 
Ответить
Сообщение[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% ±

Цитата Kuzmich, 24.10.2022 в 20:50, в сообщении № 10 ( писал(а)):
Set rng = .Find(Me.TextBox2.Value, , , Abs(Abs(chbxPart + 1) + 1))

Прошу прощения, уже эта строка выглядит по другому.

Set rng = Range("c7:C1000").SpecialCells(xlCellTypeVisible).Find(TextBox2.Text)

 
Ответить
Сообщение
Цитата Kuzmich, 24.10.2022 в 20:50, в сообщении № 10 ( писал(а)):
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
Группа: Проверенные
Ранг: Ветеран
Сообщений: 715
Репутация: 157 ±
Замечаний: 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
Группа: Проверенные
Ранг: Ветеран
Сообщений: 715
Репутация: 157 ±
Замечаний: 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% ±

Цитата Kuzmich, 24.10.2022 в 21:53, в сообщении № 14 ( писал(а)):
Посмотрите, может так надо

Да, но селект не корректно тоже работает или же он выделяет все?
Правда, запутался уже.
 
Ответить
Сообщение
Цитата Kuzmich, 24.10.2022 в 21:53, в сообщении № 14 ( писал(а)):
Посмотрите, может так надо

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

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

Excel 2003
До этого особо не вникал в логику работы, но вот посмотрел и есть вопрос,
зачем используется две переменные r1 и r2
Убираем r2

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

 
Ответить
СообщениеДо этого особо не вникал в логику работы, но вот посмотрел и есть вопрос,
зачем используется две переменные 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).SelectEnd Sub
[/vba]

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

Цитата Kuzmich, 24.10.2022 в 22:31, в сообщении № 16 ( писал(а)):
зачем используется две переменные r1 и r2

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

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

Автор - AlexVBA
Дата добавления - 25.10.2022 в 08:49
  • Страница 1 из 1
  • 1
Поиск:

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