2011-12-04 12 views
1

START_POSITIONとEND_POSITIONで文字列を分割するExcel VBAで関数が必要です。VBA - startPOSとendPOSでSTRING関数を分割

同様:

function splitxy(text as String, start_pos as Integer, end_pos as Integer) as String 

私は配列に私の文字列をオンにし、必要な文字を取得するためのループを使用する必要がある、または簡単な方法はありますか?

+3

半ば(テキスト、start_pos、end_pos - start_pos +1)と間違って何ですか? –

+0

愚かな私...それは間違っている:)答えとして書くと、私はあなたにポイントを与える... –

答えて

2

要求されるように答えとしてコメント:私の場合は

Function splitxy(Text As String, StartPos As Integer, _ 
              EndPos As Integer) As String 

    splitxy = Mid(Text, StartPos, EndPos - StartPos + 1) 

End Function 
+0

私は文字列のサイズより大きい終了位置を求める場合、この作品はありますか? –

+0

ヘルプの「Mid」の仕様をチェックすると、答えが「はい」であることがわかります。 'Mid'は、長さがゼロの場合に空の文字列を返すことを含め、このような状況で望むものを行います。残りの 'Text'を与える' Mid(Text、StartPos) 'と書くこともできます。 –

2
Function splitxy(text As String, start_pos As Integer, end_pos As Integer) As String 
splitxy = Mid(text, start_pos, (end_pos - start_pos) + 1) 
End Function 
0

、千seperatorsを持っていたすべての数字も、小数点にカンマを持っていました。私は、このようにそれを解決することができた:

Function makeNumber(n As String) 
    n = Replace(n, ",", ".") 

    If Len(n) - Len(Replace(n, ".", "")) > 1 Then 
    Dim dots As Integer 
    Dim pos_of_last_dot As Integer 
    Dim integral As String 
    Dim decimal As String 

    pos_of_last_dot = InStrRev(n, ".", -1) 
    integral = Left(n, pos_of_last_dot) 
    decimal = Mid(n, pos_of_last_dot) 
    integral = Replace(integral, ".", "") 
    decimal = Replace(decimal, ".", "") 
    n = integral & "." & decimal 

    End If 

    makeNumber = n 
End Function 
関連する問題