从数组中提取表单名称

我用两个variables定义了一个数组:表单名称和pagesetup.printarea。

varArray(i) = ThisWorkbook.Sheets(i).Name & " " & Worksheets(i).PageSetup.PrintArea 

问题是sheetname包含一个我不需要的数字(例如China2 )。 我如何分别提取sheetname和printarea的string部分? 或者,有没有更好的方法来设置这个开始? 谢谢。

只要扩展你的方法,并使用二维数组。

哪一个国际海事组织更适合这样一个字典,你可以根据需要扩大要素的数量,因为没有使用字典的重要原因(多重出现)。

也使用正则regexp来清理,但是取出所有数字。

 Sub Test() Dim x() As String Dim ws As Worksheet Dim lngCnt As Long ReDim x(1 To ActiveWorkbook.Sheets.Count, 1 To 2) For Each ws In ActiveWorkbook.Sheets lngCnt = lngCnt + 1 x(lngCnt, 1) = CleanStr(ws.Name) x(lngCnt, 2) = ws.PageSetup.PrintArea Next End Sub 

可选的清洁function

 Function CleanStr(strIn As String) As String Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "\d+" .Global = True CleanStr = .Replace(strIn, vbNullString) End With End Function 

正如我在评论中提到的,有一个更好的方法来存储工作表名称和打印区域。 这就是所谓的词典 。 例如:

 '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 ,你可以在Excel中使用正则expression式 :

 'needs reference to Microsoft VBScript Regular Expressions xx 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, "")