2016-04-12 10 views
2

シートコード名を取得するのに次のコードを使用していますが、そのコード名のインデックスのみを取得したいと考えています。コードネームは「シート4は、」私はそれが「Sheet12」私はちょうど12VBA - シートコード名インデックスを取得する方法

ActiveSheet.CodeName 

感謝したいなら、単に数4を取得したいと思いであると言うことができます!

+0

:reg.Pattern = "を[^ \ D] +" ます。Debug.Print reg.Replace(yourstring、 "") しかし、この特定のために質問は、おそらくMrigからの回答です –

+0

こんにちは@DoktorOSwaldo私はあなたの提案を適用する方法がわかりません。助けてもらえますか? Mrigからの答えは、私が探しているものではなく、別の問題に反応します。 – peetman

答えて

1

オーケー、彼らは基本的に2つの方法があります文字列の数字を抽出します。 まず、あなたは、文字列からすべてのnummeric文字を抽出する関数を書くことができます:あなたはケースだため

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 

は、これが正常に動作します。よりエレガントな方法はRegexを使用することです。 "Microsoft VBScript Regular Expressions 5.5"への参照が必要です。 Advantageは、基本的に何かを正規表現とマッチさせることができるということです。あなたの場合は、次のようになります:

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

それは簡単です:

ActiveSheet.Index 
+1

これは、コード名のインデックスではなく、シートのインデックスを示します。 – peetman

+0

コードネームの番号部分を使用しますか?はいの場合、ワークシートのコードネームはすべて、Sheet1、Sheet2、Sheet3、...、Sheet11、Sheet12、...などのような「シート」で始まりますか? – Mrig

+0

これは今起こっていることです。問題は、コードネームインデックス(コードネームの番号部分)に基づいて、いくつかのシートでFor Loopを実行したいということです。 – peetman

0

私はそのコードネームに基づいてシートを提供する機能を得ることができました。あなたはこのような何か探しているregexmに見て一般的な問題のため

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 
関連する問題