2017-02-01 11 views
4

VBA文字列配列からn番目の要素を抽出するにはどうすればよいですか?私はのように簡潔に可能な限り2番目と3番目の要素を抽出したいTEST - 2017/01/20 = InvoiceVBA文字列配列からn番目の要素を取得する

:よう

私は、文字列を持っています。私は動作しません。これは、このような何かJavascriptyをしようとしていたので、VBAの方法がなければならない:

Dim Report As String 
Dim CurrLine As String 
Dim CurrDate As String 
Dim CurrTask As String 

CurrLine = "TEST - 2017/01/20 = Invoice" 
CurrDate = Trim(Split(CurrLine, '-')[1]) 
CurrTask = Trim(Split(CurrLine, '=')[1]) 
Report = Report & CHR(34) & CurrDate & CHR(34) & "," & CHR(34) & CurrTask & CHR(34) 

//result: "2017/01/20","Invoice" 
+0

があるため、多くの文字列の連結のCSVを生成します、それが始まるならば遅すぎると、文字列を 'Join 'してすべてを1つのRegexで置き換えることができます。 – Slai

答えて

4

私は交換と@ H2SO4の溶液を使用しているだろう

Dim Report As String 
Dim CurrLine As String 
Dim CurrDate As String 
Dim CurrTask As String, St 


CurrLine = "TEST - 2017/01/20 = Invoice" 
St=Split(replace(CurrLine, "=","-"),"-") 
CurrDate = St(1) 
CurrTask = St(2) 
Report = Report & CHR(34) & CurrDate & CHR(34) & "," & CHR(34) & CurrTask & CHR(34) //result: "2017/01/20","Invoice" 
+0

効率的になるように、私はこれを行うこともできます: 'Dim Report as String、CurrLine、CurrDate、CurrTask、St'? *できるだけ多くの行を目標にすることです* – crashwap

+1

しかし、currlineとそれに続くデータ型は、文字列ではなく、文字列 – h2so4

+0

であるため、 'as String'ビットを省略して' Dim Report、CurrLine 、CurrDate、CurrTask、St'とコードはまだ正常に動作します..? – crashwap

3

可能な解決策(それが仕事関連のタスクである場合は特に)、しかし、あなたは「空想」は、コードのファンであれば、これは同様に動作します:かなり非効率的な方法のように思える

Option Explicit 

Public Sub Test() 

    Dim strtest As String 

    strtest = "Test - 2017/1/20 = Invoice" 

    Debug.Print Trim(Split(strtest, "-")(1)) 
    Debug.Print Trim(Split(strtest, "=")(1)) 
    Debug.Print Trim(Split(Trim(Split(strtest, "-")(1)), "=")(0)) 

End Sub 
関連する問題