Как сгенерировать новый лист из результата поиска?

#vba #excel

#vba #excel

Вопрос:

Я хотел бы сгенерировать новый лист для всех значений, содержащих «_S». :

Пример: Пример Excel

Когда пользователь нажимает на кнопку «Создать страницу», создаются два новых листа (один лист с заголовком «Folder22_S» и другой с заголовком «Folder3_S»).

Во второй раз я хотел бы, чтобы этот новый лист был сгенерирован из модели (не генерировал пустой лист)

Мой вопрос таков: как это сделать? Я не знаю, как найти все значения, содержащие «_S», и получить значение ячейки (Folder22_S и Folder3_S)?

Мой псевдо-код VBA:

 Sub generate()
    'Array contains all values *_S'
    Dim AllValuesContains_S As Variant
    AllValuesContains_S = Array("Folder22_S", "Folder3_S", ...)
    For Each item As String In AllValuesContains_S
      Sheets.Add.Name = item
    Next
End Sub
 

Комментарии:

1. Что вы пробовали? Так что это не сайт «Код для меня». Покажите свои усилия, и сообщество поможет вам решить ваши проблемы.

2. Вы правы, я добавил свой код. Я не знаю, какая функция, используемая для поиска всех элементов, содержит _S (регулярное выражение * _S ??)

Ответ №1:

Я предполагаю, что диапазон, в котором вы хотите выполнить поиск, равен A2: C7. Настройте эту часть кода так, чтобы она соответствовала тому диапазону, который вам нужен.

 Sub New_Wksht()
Dim SearchRange as Range, c as Range
Dim sht as Worksheet
With ThiwWorkbook
   Set SearchRange = .Sheets("Your Sheet Name").Range("A2:C7") 'Change sheet name and range to be what you need
   For Each c in SearchRange
      If Right(c.Value,2) = "_S" Then
         Set sht = .Sheets.Add
         sht.Name = c.Value
      End If
   Next C
End With
End Sub
 

Комментарии:

1. Спасибо. Я добавил End With и изменил название листа. Теперь я нахожу решение для создания нового листа из шаблона.