Microsoft Access 掲示板

Lenbについて / 10

20 コメント
views
4 フォロー
10
シソンヌ 2020/11/28 (土) 21:10:08 0029a@1c915 >> 9

ありがとうございます。教えていただいた関数を参考に考えていますが、
行き詰っています。

今回文章を何個かに分割したいので、midで作って繰り返しさせたいと思っていますがうまくいきません・・・
どこが間違っているのでしょうか。
(とりあえず汎用関数の部分のみ↓)

Public Function MidAnsiB(S As String, M As Long, L As Long) As String
    Dim res As String, T As Long
 
    If S = "" Then Exit Function  '元テキストが空なら終了
     
    If LenAnsiB(S) <= L Then    '元テキストが任意の数以下ならそのまま出力して終了
        MidAnsiB = S
        Exit Function
    End If
     
    res = StrConv(MidB$(StrConv(S, vbFromUnicode), M, L), vbUnicode)    'コードを変えて文字数揃えてユニコードに戻す
 
    res = Mid$(S, M, Len(res))
 
    If LenAnsiB(res) > L Then
        res = Mid$(S, M, Len(res) - 1)
    End If
 
 
    'サロゲートペア文字対策
    Select Case AscW(Right$(res, 1))
    Case &HD800 To &HDBFF
        res = Left$(res, Len(res) - 1)
    End Select

    MidAnsiB = res
    
End Function

通報 ...
  • 11
    シソンヌ 2020/11/28 (土) 21:14:23 0029a@1c915 >> 10

    反映させる部分↓

            cnt = cnt0 + 1
            str1 = MidAnsiB([テキスト], cnt, TEST_COUNT)
            cnt1 = LenAnsiB(str1)
                    
            cnt = cnt + cnt1
            str2 = MidAnsiB([テキスト], cnt, TEST_COUNT)
            cnt2 = LenAnsiB(str2)