シートコード名を取得するのに次のコードを使用していますが、そのコード名のインデックスのみを取得したいと考えています。コードネームは「シート4は、」私はそれが「Sheet12」私はちょうど12VBA - シートコード名インデックスを取得する方法
ActiveSheet.CodeName
感謝したいなら、単に数4を取得したいと思いであると言うことができます!
シートコード名を取得するのに次のコードを使用していますが、そのコード名のインデックスのみを取得したいと考えています。コードネームは「シート4は、」私はそれが「Sheet12」私はちょうど12VBA - シートコード名インデックスを取得する方法
ActiveSheet.CodeName
感謝したいなら、単に数4を取得したいと思いであると言うことができます!
オーケー、彼らは基本的に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, "")
私はそのコードネームに基づいてシートを提供する機能を得ることができました。あなたはこのような何か探している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
:reg.Pattern = "を[^ \ D] +" ます。Debug.Print reg.Replace(yourstring、 "") しかし、この特定のために質問は、おそらくMrigからの回答です –
こんにちは@DoktorOSwaldo私はあなたの提案を適用する方法がわかりません。助けてもらえますか? Mrigからの答えは、私が探しているものではなく、別の問題に反応します。 – peetman