从数组中提取表单名称
我用两个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, "")