#vba #excel
#vba #excel
Вопрос:
Я хотел бы сгенерировать новый лист для всех значений, содержащих «_S». :
Когда пользователь нажимает на кнопку «Создать страницу», создаются два новых листа (один лист с заголовком «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 и изменил название листа. Теперь я нахожу решение для создания нового листа из шаблона.