[ ‰‚ß‚Ä‚Ì•û‚Ö | ˆê——(ÅVXV‡) | ‘S•¶ŒŸõ | ‰ß‹ŽƒƒO ]
@
w”¼Šp‚Æ‘SŠp¬Ý‚Ì•¶Žš—ñ•ªŠ„‚ɂ‚¢‚ÄBxiƒCƒ}j
"‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V"
ã‹L‚̂悤‚È”¼Šp‚Æ‘SŠp‚Ì•¶Žš—ñ‚ª‚ ‚è
40byte‚²‚Æ‚É‹æ؂肽‚¢ê‡‚É
•¶Žš—ñ‚Ì’l‚ª40byte‚ÅŠ„‚èØ‚ê‚È‚¢ê‡
"‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa"‚Ü‚Å
•¶Žš‰»‚¯‚ð‚µ‚È‚¢‚悤‚ɶ‚©‚當Žš—ñ‚ðŽæ‚èo‚µ‚Ä‚¢‚é‚Ì‚Å‚·‚ª
40byteˆÈ~‚ðŽæ‚èo‚·•û–@‚ŃAƒhƒoƒCƒX‚¢‚½‚¾‚¯‚È‚¢‚Å‚µ‚傤‚©B
‚æ‚낵‚‚¨Šè‚¢‚¢‚½‚µ‚Ü‚·B
"‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V"
«
‰º‹L‚̂悤‚É•ªŠ„
"‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa"(40byteˆÈ“à)
"‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb"(40byteˆÈ“à)
Sub TEST()
ZŠŠ¿Žš = "‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V"
Debug.Print ConvLeftBStr(ZŠŠ¿Žš, 40)
End Sub
Function ConvLeftBStr(varData As Variant, intLenB As Integer) As String
Dim strBin As String Dim strRet As String
strBin = StrConv((varData), vbFromUnicode)
If LenB(strBin) <= intLenB Then
strRet = (varData) Else
If LenB(StrConv(LeftB(strBin, intLenB), vbUnicode)) = _ LenB(StrConv(LeftB(strBin, intLenB + 1), vbUnicode)) Then
strRet = StrConv(LeftB(strBin, intLenB - 1), vbUnicode) Else strRet = StrConv(LeftB(strBin, intLenB), vbUnicode) End If End If
ConvLeftBStr = strRet
End Function
ƒ Žg—p ExcelFExcel2019AŽg—p OSFWindows10 „
‚±‚ñ‚ÈŠ´‚¶‚Å‚Í‚Ç‚¤‚Å‚µ‚傤B
Sub test() Const n As Long = 40 Dim s As String Dim ss As String ReDim ary(0 To 0) As String
s = "‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V" Columns("A").NumberFormat = "@" Do ss = LeftB(s, n) ary(UBound(ary)) = ss s = Replace(s, ss, "", Count:=1) If s = "" Then Exit Do ReDim Preserve ary(UBound(ary) + 1) If LenB(StrConv(s, vbFromUnicode)) <= n Then ary(UBound(ary)) = s Exit Do End If Loop
[A1].Resize(UBound(ary) + 1, 1) = Application.Transpose(ary) End Sub # C³‚µ‚Ü‚µ‚½B # Ž¿–âŽÒ‚³‚ñ‚̃R[ƒh‚ÅŠ®¬‚µ‚Ä‚¢‚½‚Ì‚Å‚·‚ËB‚Ç‚¤‚àŽ¸—çB
iƒÁj 2021/11/25(–Ø) 01:16
’ñŽ¦‚ÌConvLeftBStr‚ðŽg‚¤‚È‚çA
Sub TEST() Dim ZŠŠ¿Žš As String, res As String ZŠŠ¿Žš = "‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚Vaaa"
Do res = ConvLeftBStr(ZŠŠ¿Žš, 40) Debug.Print res If res = ZŠŠ¿Žš Then Exit Do ZŠŠ¿Žš = Mid(ZŠŠ¿Žš, Len(res) + 1) Loop End Sub ihatenaj 2021/11/25(–Ø) 04:58
ZŠŠ¿Žš = "‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V12345"‚¾‚Á‚½ê‡ ‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa, ‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V12345‚Æ‚È‚é‚Ì‚Å‚·‚ª ‰º‹L‚ÌŒ‹‰Ê‚̂悤‚É
‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa,
‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb,
‚V12345
40byte‚²‚Æ‚É”z—ñ‚ð‹æ؂肽‚¢‚Ì‚Å‚·‚ªƒAƒhƒoƒCƒX‚¢‚½‚¾‚¯‚é‚Æ•‚©‚è‚Ü‚·B
•â‘«‚Å‚·‚ª120byteˆÈã‚ ‚éꇂÍ
”z—ñ‚Í‚S‚‚ɂȂÁ‚Ä‚¢‚‚Ì‚ð‘z’肵‚Ä‚¨‚è‚Ü‚·B
¡‰ñ‰º‹L‚Å‚²’ñŽ¦‚³‚¹‚Ä‚¢‚½‚¾‚¢‚½ƒR[ƒh‚Å
—¬—p‚·‚éꇂÌ
ƒAƒhƒoƒCƒX‚𒸂¯‚½‚ç‘å•Ï•‚©‚è‚Ü‚·B
Sub test()
Dim address1 As String, address2 As String, address3 As String
Dim work As String
Dim ii As Integer
ZŠŠ¿Žš = "‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V12345"
For ii = 1 To Len(ZŠŠ¿Žš)
work = Left(ZŠŠ¿Žš, ii) work = StrConv(work, vbFromUnicode) If (LenB(work) > 40) Then Exit For End If Next ii
address1 = Left(ZŠŠ¿Žš, ii - 1) 'ZŠ‚P
address2 = Mid(ZŠŠ¿Žš, ii) 'ZŠ‚Q
Debug.Print address1 & "," & address2
End Sub
iƒCƒ}j 2021/11/25(–Ø) 11:16
40ƒoƒCƒg‚²‚ƂɃJƒ“ƒ}‚ð‘}“ü‚µ‚½‚¢‚Æ‚¢‚¤‚±‚Æ‚È‚çA‰º‹L‚ÅB
Sub test() Dim address As String Dim ZŠŠ¿Žš As String Dim work As String
ZŠŠ¿Žš = "‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb‚V12345" Do work = ConvLeftBStr(ZŠŠ¿Žš, 40) address = address & "," & work If work = ZŠŠ¿Žš Then Exit Do ZŠŠ¿Žš = Mid(ZŠŠ¿Žš, Len(work) + 1) Loop address = Mid(address, 2)
Debug.Print address End Sub
ConvLeftBStr‚ÍŽ¿–â‚É‚ ‚éŠÖ”‚»‚Ì‚Ü‚Ü‚ÅB
”z—ñ‚É‚µ‚½‚¢‚È‚çAÅŒã‚É Split(address,",") ‚Å”z—ñ‚É•ÏŠ·‚Å‚«‚Ü‚·B ihatenaj 2021/11/25(–Ø) 14:32
‚±‚¿‚ç‚Å‚ÍAƒCƒ~ƒfƒBƒGƒCƒgƒEƒBƒ“ƒhƒE‚ÉA
‚P‚Q‚R‚S‚T‚U‚V‚W‚X‚O‚P‚Q‚R‚S‚T‚U‚V‚W‚Xa,‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚V‚Vb,‚V12345
‚ƃJƒ“ƒ}‹æØ‚è‚Å•\Ž¦‚³‚ê‚Ä‚Ü‚·‚¯‚ÇB
Ž¿–â‚É‚ ‚鉺‹L‚̃R[ƒh‚Í휂µ‚Ä‚¢‚È‚¢‚Å‚·‚æ‚ËB
Function ConvLeftBStr(varData As Variant, intLenB As Integer) As String Dim strBin As String Dim strRet As String strBin = StrConv((varData), vbFromUnicode) If LenB(strBin) <= intLenB Then strRet = (varData) Else If LenB(StrConv(LeftB(strBin, intLenB), vbUnicode)) = _ LenB(StrConv(LeftB(strBin, intLenB + 1), vbUnicode)) Then strRet = StrConv(LeftB(strBin, intLenB - 1), vbUnicode) Else strRet = StrConv(LeftB(strBin, intLenB), vbUnicode) End If End If ConvLeftBStr = strRet End Function
ihatenaj 2021/11/25(–Ø) 15:00
iƒCƒ}j 2021/11/25(–Ø) 17:06
[ ˆê——(ÅVXV‡) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.