通常のACCESS VBAでの関数は解らないが、ある文字列を指定した数で2つに分離するとなるとなかなか大変である。
そこで独自に関数を作成してクエリ内で使用することにより簡単に分離が可能な関数をメモします。
この関数の場合は全角半角の文字が混入しても指定した半角数を対象にします。
(例)東京ディズニーランド(15文字)10で分けたい場合 東京ディズニ -ランドのように出来ます。
まず、ACCESSのモジュール内に Functionのモジュールを作成
Function MyLenLeft(ByVal a, ByVal b)
Dim c, LenName
c = 0
Dim i, nul
nul = 0
For i = 0 To Len(a) - 1
Dim k
k = Mid(a, i + 1, 1)
If (Asc(k) And &HFF00) = 0 Then
c = c + 1
Else
c = c + 2
End If
If c <= b * 1 Then
LenName = LenName & k
End If
Next
MyLenLeft = LenName
End Function
Function MyLenMidOver (ByVal a, ByVal b)
Dim c, LenName
c = 0
Dim i, nul
nul = 0
For i = 0 To Len(a) - 1
Dim k
k = Mid(a, i + 1, 1)
If (Asc(k) And &HFF00) = 0 Then
c = c + 1
Else
c = c + 2
End If
If c <= b * 1 Then
LenName = LenName & k
End If
Next
MyLenMidOver = LenName
End Function
この2つをコピペで作成して
クエリ内に LeftやRight等の関数と同じように使用する。
(例)住所の列がものすごく長い場合に30文字で分けたい場合
住所A:MyLenLeft(住所、30)、住所B:MyLenMidOver(住所、30)
これで綺麗に分割できます。
なにかと便利な関数ですので他の用途にも応用が利くと思います。