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

Вход

Регистрация

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

 

= Мир MS Excel/Выделение листов, в которых содержатся определенные слова - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выделение листов, в которых содержатся определенные слова
Мурад Дата: Пятница, 21.11.2014, 14:19 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Добрый день! Помогите с написанием макроса, который бы осуществлял поиск в определенной ячейке каждого листа, допустим A1, слова "Факультет" и формировало бы массив таких листов. В итоге получаем выделенные/сгруппированные листы, над которыми в дальнейшем можно выполнять одинаковые операции одновременно.
К примеру:
[vba]
Код
Sub VUZ()
dim a as array
With this workbook
for i=1 to .sheets.count
sheets(i).select
if range(A1)="Факультет" <присвоить лист (sheets(i)) к массиву a>
sheets(a(i)).select
next
end with
[/vba]
 
Ответить
СообщениеДобрый день! Помогите с написанием макроса, который бы осуществлял поиск в определенной ячейке каждого листа, допустим A1, слова "Факультет" и формировало бы массив таких листов. В итоге получаем выделенные/сгруппированные листы, над которыми в дальнейшем можно выполнять одинаковые операции одновременно.
К примеру:
[vba]
Код
Sub VUZ()
dim a as array
With this workbook
for i=1 to .sheets.count
sheets(i).select
if range(A1)="Факультет" <присвоить лист (sheets(i)) к массиву a>
sheets(a(i)).select
next
end with
[/vba]

Автор - Мурад
Дата добавления - 21.11.2014 в 14:19
Саня Дата: Пятница, 21.11.2014, 14:35 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
[vba]
Код
Sub VUZ()
     Dim bFirst As Boolean
     Dim wks As Worksheet
      
     For Each wks In Worksheets
         If wks.Range("A1").Value = "Факультет" Then
             wks.Select Not bFirst
             If Not bFirst Then bFirst = True
         End If
     Next wks
End Sub
[/vba]
 
Ответить
Сообщение[vba]
Код
Sub VUZ()
     Dim bFirst As Boolean
     Dim wks As Worksheet
      
     For Each wks In Worksheets
         If wks.Range("A1").Value = "Факультет" Then
             wks.Select Not bFirst
             If Not bFirst Then bFirst = True
         End If
     Next wks
End Sub
[/vba]

Автор - Саня
Дата добавления - 21.11.2014 в 14:35
Мурад Дата: Пятница, 21.11.2014, 14:39 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Спасибо, Саня! А я уж начал мудрить с этими кусками))
[vba]
Код
Sub Автофигура3_Щелкнуть()    ' Получить список листов для перемещения
     ReDim GroupName(1 To 1)
     For twhb = 1 To ThisWorkbook.Sheets.Count
         If Right(Sheets(twhb).Name, 1) = "р" Then
             n = n + 1: ReDim Preserve GroupName(1 To n)
             GroupName(n) = Sheets(twhb).Name
         End If
     Next twhb
     Sheets(GroupName).Select
End Sub

Sub Вариант2() ' Получить список листов для перемещения
     Dim sh As Worksheet: ReDim GroupName(1 To 1)
     For Each sh In ThisWorkbook.Worksheets
         If sh.Name Like "*р" Then n = n + 1: ReDim Preserve GroupName(1 To n): GroupName(n) = sh.Name
     Next sh
     On Error Resume Next: Sheets(GroupName).Select
End Sub
[/vba]
 
Ответить
СообщениеСпасибо, Саня! А я уж начал мудрить с этими кусками))
[vba]
Код
Sub Автофигура3_Щелкнуть()    ' Получить список листов для перемещения
     ReDim GroupName(1 To 1)
     For twhb = 1 To ThisWorkbook.Sheets.Count
         If Right(Sheets(twhb).Name, 1) = "р" Then
             n = n + 1: ReDim Preserve GroupName(1 To n)
             GroupName(n) = Sheets(twhb).Name
         End If
     Next twhb
     Sheets(GroupName).Select
End Sub

Sub Вариант2() ' Получить список листов для перемещения
     Dim sh As Worksheet: ReDim GroupName(1 To 1)
     For Each sh In ThisWorkbook.Worksheets
         If sh.Name Like "*р" Then n = n + 1: ReDim Preserve GroupName(1 To n): GroupName(n) = sh.Name
     Next sh
     On Error Resume Next: Sheets(GroupName).Select
End Sub
[/vba]

Автор - Мурад
Дата добавления - 21.11.2014 в 14:39
Мурад Дата: Пятница, 21.11.2014, 14:59 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Подскажите, а как задать поиск в вашем макросе по части слова, т.е. поиск в ячейке А1 части слова "культет"
Смотрел в книге Эйткена. Там используется оператор "*". Он не срабатывает.


Сообщение отредактировал Мурад - Пятница, 21.11.2014, 15:00
 
Ответить
СообщениеПодскажите, а как задать поиск в вашем макросе по части слова, т.е. поиск в ячейке А1 части слова "культет"
Смотрел в книге Эйткена. Там используется оператор "*". Он не срабатывает.

Автор - Мурад
Дата добавления - 21.11.2014 в 14:59
Rioran Дата: Пятница, 21.11.2014, 15:15 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Мурад, здравствуйте.

В своём макросе Александр делает прямое сравнение IF X = Y Then
Если же Вам нужно сверять лишь часть слова - необходимо использовать IF X Like Y Then, где Y для "культета" должен выглядеть: "*культет*".

Или, второй вариант, можете проанализировать это:

[vba]
Код
If InStr(1, "Rioran", "ra") Then
     MsgBox 1
Else
     MsgBox 0
End If
[/vba]
Саня, скажи пожалуйста, что у тебя делает следующий кусок? Немного заковыристо.

[vba]
Код
wks.Select Not bFirst
If Not bFirst Then bFirst = True
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеМурад, здравствуйте.

В своём макросе Александр делает прямое сравнение IF X = Y Then
Если же Вам нужно сверять лишь часть слова - необходимо использовать IF X Like Y Then, где Y для "культета" должен выглядеть: "*культет*".

Или, второй вариант, можете проанализировать это:

[vba]
Код
If InStr(1, "Rioran", "ra") Then
     MsgBox 1
Else
     MsgBox 0
End If
[/vba]
Саня, скажи пожалуйста, что у тебя делает следующий кусок? Немного заковыристо.

[vba]
Код
wks.Select Not bFirst
If Not bFirst Then bFirst = True
[/vba]

Автор - Rioran
Дата добавления - 21.11.2014 в 15:15
Саня Дата: Пятница, 21.11.2014, 15:15 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
[vba]
Код
If wks.Range("A1").Value like "*культет" Then
[/vba]

Саня, скажи пожалуйста, что у тебя делает следующий кусок? Немного заковыристо.

у метода Select (для рабочего листа) есть один параметр Replace:
если он = True, то выделение листа происходит так, что выделенным становится только он один
если же = False, то выделение листа происходит добавлением к ранее выделенным...

первый найденный лист нам нужно выделить одиночно, остальные "прибавить" к первому - для этого нужна переменная bFirst
 
Ответить
Сообщение[vba]
Код
If wks.Range("A1").Value like "*культет" Then
[/vba]

Саня, скажи пожалуйста, что у тебя делает следующий кусок? Немного заковыристо.

у метода Select (для рабочего листа) есть один параметр Replace:
если он = True, то выделение листа происходит так, что выделенным становится только он один
если же = False, то выделение листа происходит добавлением к ранее выделенным...

первый найденный лист нам нужно выделить одиночно, остальные "прибавить" к первому - для этого нужна переменная bFirst

Автор - Саня
Дата добавления - 21.11.2014 в 15:15
Мурад Дата: Вторник, 25.11.2014, 23:31 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Спасибо, все работает!
 
Ответить
СообщениеСпасибо, все работает!

Автор - Мурад
Дата добавления - 25.11.2014 в 23:31
  • Страница 1 из 1
  • 1
Поиск:

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