Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126

Поиск меток

05.03.2013, 14:53. Показов 2813. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Идея в том, чтобы найти все строки в которых находится значение qw и скрыть строку где находятся значение.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub trvi()
    Dim Poisk As Range
 
    With Worksheets("Лист1")
        Set Poisk = .Range("A1:Z100").Find(What:="qw", LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        MsgBox Poisk.Row
 
.Rows(Poisk.Row).Hidden = True
 
            If Not Poisk Is Nothing Then
            sa = Poisk.Address
            Do
                Set Poisk = .FindNext(After:=Poisk)
                Loop While Not Poisk Is Nothing And Poisk.Address <> sa
            End If
    End With
End Sub
У меня значений qw несколько. Код ищет только первое значение, а дальше не идёт???
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2013, 14:53
Ответы с готовыми решениями:

Замена меток в документе WORD данными из EXCEL
Доброго времени суток. Возникла необходимость на работе в создании данного макроса, а правильно реализовать проблематично. Суть: Есть...

Построить график тела, брошенного под углом к горизонту с автоподбором масштаба и меток
Доброго времени суток, котята. Есть приблизительный код Апостроффа, как его переделать только в отображение первой четверти и добавить...

Использование меток
Доброго времени суток. Есть, так сказать, legacy-код, если так можно сказать о PascalABC.NET) Встретился с проблемой использования меток....

27
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
07.03.2013, 14:54
Студворк — интернет-сервис помощи студентам
trvi, отлично, теперь мне все ясно.
У вас на листе генерируется специальное значение ошибки (#REF!) и, как следует из статьи на MSDN, это значение не приводится автоматически к строковому типу. Выходов тут может быть два: либо явное приведение к строковому типу с помощью функции CStr, либо проверка ячейки на содержание специального значения ошибки с помощью функции IsError. В коде ниже демонстрируется второй подход.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Sub ConditionalHide(ByVal rn As Range, ByVal searchFor As String)
   Dim r As Range
   Dim c As Collection
   Dim i As Long, j As Long
   Dim m() As Variant, v As Variant
   Set c = New Collection
   m = rn
   For i = 1 To rn.Rows.Count
      For j = 1 To rn.Columns.Count
         If Not IsError(m(i, j)) Then
            If m(i, j) = searchFor Then
               c.Add i
               Exit For
            End If
         End If
      Next j
   Next i
   If c.Count > 0 Then Set r = rn.Cells(c(1), 1)
   For Each v In c
      Set r = Union(r, rn.Cells(v, 1))
   Next v
   r.EntireRow.Hidden = True
End Sub
 
Sub ConditionalShow(ByVal rn As Range, ByVal searchFor As String)
   Dim r As Range
   Dim c As Collection
   Dim i As Long, j As Long
   Dim m() As Variant, v As Variant
   Set c = New Collection
   m = rn
   For i = 1 To rn.Rows.Count
      For j = 1 To rn.Columns.Count
         If Not IsError(m(i, j)) Then
            If m(i, j) = searchFor Then
               c.Add i
               Exit For
            End If
         End If
      Next j
   Next i
   If c.Count > 0 Then Set r = rn.Cells(c(1), 1)
   For Each v In c
      Set r = Union(r, rn.Cells(v, 1))
   Next v
   r.EntireRow.Hidden = False
End Sub
С уважением,
Aksima
1
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
08.03.2013, 18:39  [ТС]
Aksima,

Что-то не получается у меня. Вот код который я использовал:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Sub Generate()
    
    Dim ws1 As Worksheet
    Set ws1 = Worksheets("Ëèñò1")
 
    Dim rn As Range
    Set rn = ws1.Range("A1:Z100")
    
Application.ScreenUpdating = False
 
    With ws1
         .Activate
         ' .Visible = xlSheetVisible
                ConditionalHide rn, "hide"
                ConditionalShow rn, "show"
         .PrintPreview
         ' .Visible = xlSheetHidden
    End With
 
 
Application.ScreenUpdating = True
End Sub
 
Sub ConditionalHide(ByVal rn As Range, ByVal searchFor As String)
   Dim r As Range
   Dim c As Collection
   Dim i As Long, j As Long
   Dim m() As Variant, v As Variant
   Set c = New Collection
   m = rn
   For i = 1 To rn.Rows.Count
      For j = 1 To rn.Columns.Count
         If Not IsError(m(i, j)) Then
            If m(i, j) = searchFor Then
               c.Add i
               Exit For
            End If
         End If
      Next j
   Next i
   If c.Count > 0 Then Set r = rn.Cells(c(1), 1)
   For Each v In c
      Set r = Union(r, rn.Cells(v, 1))
   Next v
   r.EntireRow.Hidden = True
End Sub
 
Sub ConditionalShow(ByVal rn As Range, ByVal searchFor As String)
   Dim r As Range
   Dim c As Collection
   Dim i As Long, j As Long
   Dim m() As Variant, v As Variant
   Set c = New Collection
   m = rn
   For i = 1 To rn.Rows.Count
      For j = 1 To rn.Columns.Count
         If Not IsError(m(i, j)) Then
            If m(i, j) = searchFor Then
               c.Add i
               Exit For
            End If
         End If
      Next j
   Next i
   If c.Count > 0 Then Set r = rn.Cells(c(1), 1)
   For Each v In c
      Set r = Union(r, rn.Cells(v, 1))
   Next v
   r.EntireRow.Hidden = False
End Sub
Даёт ошибку в строке: object variable or with block variable not set
Visual Basic
1
r.EntireRow.Hidden = False
Можешь вышлешь мне в личку на фаил с корректным кодом???

Спасибо большое за отклик!!!
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
08.03.2013, 19:04
Я бы добавил в функцию ещё один параметр - "truefalse". Ну и соответственно код урезал на половину. Или там ещё есть разница между функциями, которую я не вижу?
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
09.03.2013, 08:35  [ТС]
Hugo121,

Можешь пример показать?
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
09.03.2013, 10:34  [ТС]
Aksima,

Вроде работает... пока тестирую.

Но если уйти за диапазон, то будет ошибка.
Миниатюры
Поиск меток   Поиск меток  
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
09.03.2013, 10:35  [ТС]
Aksima,

Visual Basic
1
Выходов тут может быть два: либо явное приведение к строковому типу с помощью функции CStr, либо проверка ячейки на содержание специального значения ошибки с помощью функции IsError. В коде ниже демонстрируется второй подход.
Почему именно по второму подходу или по первому?
Скажите, а упростить код можно? Тут Hugo121 говорит, что можно упростить...
0
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
09.03.2013, 12:44
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
Sub Generate()
    Dim rn As Range
 
    With Worksheets("Ëèñò1")
        .Activate
        Set rn = .Range("A1:Z100")
         ' .Visible = xlSheetVisible
                Conditional rn, "hide", True
                Conditional rn, "show", False
         '.PrintPreview
         ' .Visible = xlSheetHidden
    End With
End Sub
 
Sub Conditional(ByVal rn As Range, ByVal searchFor As String, ByVal Hidden As Boolean)
   Dim r As Range, Cell As Range
   Dim i As Long, j As Long
   For Each Cell In rn
        If CStr(Cell.Value) = searchFor Then
            If r Is Nothing Then Set r = rn.Cells(Cell.Row, 1) Else Set r = Union(r, rn.Cells(Cell.Row, 1))
         End If
   Next
   If Not r Is Nothing Then r.EntireRow.Hidden = Hidden
End Sub
1
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
09.03.2013, 14:21  [ТС]
Step_UA,

Спасибо большое!!! Отличный вариант!

Добавлено через 1 минуту
Aksima,

Огромнейшее СПАСИБО!!! Дай Бог тебе здравия!!! Очень помогли...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2013, 14:21

Массив меток
Возможен-ли массив меток, аналогичный массиву процедур?

Создание меток
Как возвратить ход вычислений в начало, таким образом чтобы у пользователя был выбор - выход по нажатию клавиши еск, или продолжения после...

Размеры меток
Доброго времени суток! Помогите пожалуйста! Есть прога парсинг центробанка. В результате ее работы в пдф файл выводится график курса валют....

оператор меток
Тут программа которую мне делать помогали, она не совсем правильная. Надо чтобы выводилось кол-во чисел больших своих соседей, но не...

Избавление от меток
есть два куска кода полные меток, проблема в том, что не понимаю логики, вот первый: DO 430 I=1,6 K1=ICN(I) ...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru