MidA(文字列, 開始バイト位置, バイト長)関数を作る(VBA)
VBAに焼き直し。
Sub a()
MsgBox MidA("abcdefg", 3, 2)
MsgBox MidA("あいうefg", 3, 2)
MsgBox MidA("あいうefg", 3, 3)
MsgBox MidA("aいうefg", 3, 2)
MsgBox MidA("aいうefg", 3, 3)
End Sub
Function MidA(Str As String, bStart As Long, bLength As Long) As String
Dim aStart As Long
Dim aLength As Long
Dim bPosition As Long
Dim aPosition As Long
aStart = 0
aLength = -1
bPosition = 1
For aPosition = 1 To Len(Str)
If aStart = 0 Then
If bStart = bPosition Then
aStart = aPosition
ElseIf bStart < bPosition Then
aStart = aPosition - 1
bStart = bPosition - 2
End If
Else
If bStart + bLength = bPosition Then
aLength = aPosition - aStart
Exit For
ElseIf bStart + bLength < bPosition Then
aLength = aPosition - aStart - 1
bLength = bPosition - bStart - 2
Exit For
End If
End If
bPosition = bPosition + 1 - (Asc(Mid(Str, aPosition, 1)) < 0)
Next
If aStart Then
If aLength = -1 Then
aLength = aPosition - aStart
bLength = bPosition - bStart
End If
MidA = Mid(Str, aStart, aLength)
End If
End Function
引数の位置と長さは、補正後の値を返すように、ByRefにしています。
« MidA(文字列, 開始バイト位置, バイト長)関数を作る(VBScript) | トップページ | MidA(文字列, 開始バイト位置, バイト長)関数を作る(VB.NET) »