Добрый день! Помогите с написанием макроса, который бы осуществлял поиск в определенной ячейке каждого листа, допустим 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]
Код
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
Подскажите, а как задать поиск в вашем макросе по части слова, т.е. поиск в ячейке А1 части слова "культет" Смотрел в книге Эйткена. Там используется оператор "*". Он не срабатывает.
Подскажите, а как задать поиск в вашем макросе по части слова, т.е. поиск в ячейке А1 части слова "культет" Смотрел в книге Эйткена. Там используется оператор "*". Он не срабатывает.Мурад
Сообщение отредактировал Мурад - Пятница, 21.11.2014, 15:00
В своём макросе Александр делает прямое сравнение 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]
Мурад, здравствуйте.
В своём макросе Александр делает прямое сравнение 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
Саня, скажи пожалуйста, что у тебя делает следующий кусок? Немного заковыристо.
у метода Select (для рабочего листа) есть один параметр Replace: если он = True, то выделение листа происходит так, что выделенным становится только он один если же = False, то выделение листа происходит добавлением к ранее выделенным...
первый найденный лист нам нужно выделить одиночно, остальные "прибавить" к первому - для этого нужна переменная bFirst
Саня, скажи пожалуйста, что у тебя делает следующий кусок? Немного заковыристо.
у метода Select (для рабочего листа) есть один параметр Replace: если он = True, то выделение листа происходит так, что выделенным становится только он один если же = False, то выделение листа происходит добавлением к ранее выделенным...
первый найденный лист нам нужно выделить одиночно, остальные "прибавить" к первому - для этого нужна переменная bFirstСаня