VBA – 如何获取表单代号索引

我正在使用以下来获取表单代号,但我想只得到该代号的索引。 可以说代号是“Sheet4”,我想得到的只是数字4.如果是“Sheet12”,我只想要12。

ActiveSheet.CodeName 

谢谢!

好,提取一个string的数字他们基本上是两种方式。 首先你可以编写一个函数,从你的string中提取所有的数字字符:

 Function removeBadChars(sInput As String) As String Dim i As Integer Dim sResult As String Dim sChr As String For i = 1 To Len(sInput) sChr = Mid(sInput, i, 1) If IsNumeric(sChr) Then sResult = sResult & sChr End If Next removeBadChars = sResult End Function 

这工作正常,你的情况。 更优雅的方式将使用正则expression式。 这将需要对“Microsoft VBScript正则expression式5.5”的引用。 优点是,你基本上可以匹配任何东西与正则expression式。 在你的情况下,它将如下所示:

 Dim regEx As New RegExp regEx.Pattern = "[^\d]+" Debug.Print regEx.Replace(ActiveSheet.CodeName, "") 

这很简单:

  ActiveSheet.Index 

我设法得到一个函数,根据它的代号给我的工作表。

 Function GetSheetWithCodename(ByVal worksheetCodename As String, Optional wb As Workbook) As Worksheet Dim iSheet As Long If wb Is Nothing Then Set wb = ThisWorkbook ' mimics the default behaviour For iSheet = 1 To wb.Worksheets.Count If wb.Worksheets(iSheet).CodeName = worksheetCodename Then Set GetSheetWithCodename = wb.Worksheets(iSheet) Exit Function End If Next iSheet End Function