[ ‰‚߂Ă̕û‚Ö | ˆê——(Å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.