vbaには、Mid()関数で文字列を分割(substr?)できますが、このMid()は、全角半角問わず、1文字として扱います。
今回、全角=2文字,半角=1文字として、文字列を分割する機会があったので、調べてみたところ、次のように StrConv()とMidB()で実現できるようです。
Function byteMid(orgStr, startPos, endPos) Dim byteData() As Byte byteData = StrConv(orgStr, vbFromUnicode) 'ANSI に変換 If UBound(byteData) < endPos Then endPos = UBound(byteData) + 1 End If Dim midLen As Integer midLen = endPos - (startPos - 1) If midLen <= 0 Then Exit Function End If byteMid = Trim(StrConv(MidB(byteData, startPos, midLen), vbUnicode)) End Function