Как я уже упоминал в комментарии, есть лучший способ хранения имен листов и областей печати. Это называется Dictionary. Например:
'needs reference to Microsoft Scripting Runtime
Dim dic As Dictionary
Set dic = New Dictionary
dic.Add "SheetName", "PrintArea"
'get print area for sheet
Dim sPrintArea As String
sPrintArea = dic("SheetName")
Как вы можете видеть, теперь вы можете получить доступ к области печати через имя листа;)
Если вы хотите, чтобы перечислить все ключи и значения, используйте for...each
цикл:
Dim oKey As Variant
For Each oKey In dic.Keys
MsgBox oKey & vbTab & dic(oKey)
Next
Если вы хотите получить только China
, вы можете использовать Regex within Excel:
'needs reference to Microsoft VBScript Regular Expressions x.x
Dim oRegex As VBScript_RegExp_55.RegExp
Set oRegex = New VBScript_RegExp_55.RegExp
sPattern = "\d{1,}"
With oRegex
.Pattern = sPattern
.MultiLine = False
End With
sPureSheetName = oRegex.Replace(sSheetName, "")
Да, есть лучше способ. Вы можете использовать класс 'Словарь', но вы должны предоставить более подробную информацию о своей проблеме. –
Количество листов может варьироваться. Итак, я настроил массив для сбора необходимых мне данных: имя каждого листа и диапазоны печати, которые заданы на каждом листе. Названия листов (по какой-либо причине) содержат число. Например, одно имя листа - China2. Все, что мне нужно, это «Китай» и диапазон печати, но как две разные переменные. – ectrimm