MW211 EXIT

devlog
ExcelVBA/昔ながらの文字長
2019年11月29日
昔のExcelでは、全角文字=2バイトだった(ShiftJISだったので)
でも今はUnicodeになったのでその常識が通じない。
でも、それを使いたい場合がある。
ということで、自前でリメンバーLenB、LeftBを。
┌──────────────────────────────────────┐
│'===========================================================================│
│'  ShiftJISバイト長(全角文字=2バイト)                                      │
│'===========================================================================│
│Public Function LenSjis(ByVal 入力 As String) As Long                       │
│    LenSjis = LenB(StrConv(入力, vbFromUnicode))                            │
│End Function                                                                │
├──────────────────────────────────────┤
│'===========================================================================│
│'  ShiftJISバイト長で左から切り抜き                                         │
│'===========================================================================│
│Public Function LeftSjis(ByVal 入力 As String, _                            │
│                         ByVal バイト長 As Long) As String                  │
│    Dim 結果 As String                                                      │
│    結果 = StrConv(LeftB(StrConv(入力, vbFromUnicode), バイト長), vbUnicode)│
│    If LenSjis(結果) > バイト長 Then                                        │
│        結果 = Left(入力, Len(結果) - 1)                                    │
│    End If                                                                  │
│    LeftSjis = 結果                                                         │
│End Function                                                                │
└──────────────────────────────────────┘
分類:ExcelVBA