初めて投稿します。Win2000・VB6の環境です。
まだ、VBに慣れていないので、教えてください。
text1に文章があり、それを20バイトずつ、text2に表示させようとしています。
例えば、
text1:
49458364135459ああいいいううう
text2:
49458364135459ああい
いいううう
となるようにしたいです。
そこで
Dim strA As String
Dim A as Integer
a=1
Do until strA=""
strA = StrConv(MidB(StrConv(strA, vbFromUnicode), a, 20), vbUnicode)
text2=strA & vbCrLf
a = a + 20
loop
としましたが、20バイト目がもし全角であれば、21バイト目にもまたぐので、
この場合19バイト目で区切り、20バイト目から次の行にさせたいのです。
Dim strA As String
Dim a as Integer
Dim b as Integer
a=1
Do until strA=""
strA = StrConv(MidB(StrConv(strA, vbFromUnicode), a, 20), vbUnicode)
If LenB(strA, 20, 1) = 1 Then
strA = StrConv(MidB(StrConv(strA, vbFromUnicode), a, 20), vbUnicode)
a = a + 20
Else
strA = StrConv(MidB(StrConv(strA, vbFromUnicode), a, 19), vbUnicode)
a = a + 19
End If
text2=strA & vbCrLf
loop
とやってみましたが、うまくいきません。
どこが間違っているのでしょうか?
うまく説明できていなければ申し訳ありません。
すみません、入力ミスしてました。
text1に文章があり、それを20バイトずつ、text2に表示させようとしています。
例えば、
text1:
49458364135459ああいいいううう
text2:
49458364135459ああい
いいううう
となるようにしたいです。
そこで
Dim strA As String
Dim A as Integer
a=1
Do until strA=""
strA = StrConv(MidB(StrConv(text1, vbFromUnicode), a, 20), vbUnicode)
text2=strA & vbCrLf
a = a + 20
loop
としましたが、20バイト目がもし全角であれば、21バイト目にもまたぐので、
この場合19バイト目で区切り、20バイト目から次の行にさせたいのです。
Dim strA As String
Dim strB As String
Dim a as Integer
Dim b as Integer
a=1
Do until strA=""
strA = StrConv(MidB(StrConv(text1, vbFromUnicode), a, 20), vbUnicode)
strB = StrConv(MidB(StrConv(strA, vbFromUnicode), 20, 1), vbUnicode)
If LenB(strB) = 1 Then
strA = StrConv(MidB(StrConv(text1, vbFromUnicode), a, 20), vbUnicode)
a = a + 20
Else
strA = StrConv(MidB(StrConv(text1, vbFromUnicode), a, 19), vbUnicode)
a = a + 19
End If
text2=strA & vbCrLf
loop
とやってみましたが、うまくいきません。
どこが間違っているのでしょうか?
うまく説明できていなければ申し訳ありません。
うまく説明・・・「泣き別れ」でWebを検索してみるべし、
QA掲示板の方かも知れないけれど、過去ログにもあります。
まずは一般的なキーワードで説明できると解決は早くなります。
これでどうですか??
Private Sub Command1_Click()
Dim str As String
Dim strMid As String
Dim lng As Long
Dim sumlng As Long
Dim i As Integer
For i = 1 To 20
strMid = Mid$(Text1.Text, i, 1)
lng = LenB(StrConv(strMid, vbFromUnicode))
If 20 >= (sumlng + lng) Then
str = str & strMid
sumlng = sumlng + lng
Else
str = str & vbCrLf
str = str & strMid
sumlng = 0
End If
Next i
Text2.Text = str
End Sub
Private Sub Form_Load()
Text1.Text = "49458364135459ああいいいううう"
Text2.Text = ""
End Sub
訂正
Private Sub Command1_Click()
Dim str As String
Dim strMid As String
Dim lng As Long
Dim sumlng As Long
Dim i As Integer
For i = 1 To Len(Text1.Text)
strMid = Mid$(Text1.Text, i, 1)
lng = LenB(StrConv(strMid, vbFromUnicode))
If 20 >= (sumlng + lng) Then
str = str & strMid
sumlng = sumlng + lng
Else
str = str & vbCrLf
str = str & strMid
sumlng = 0
End If
Next i
Text2.Text = str
End Sub
Private Sub Form_Load()
Text1.Text = "49458364135459ああいいいううう"
Text2.Text = ""
End Sub
さくらさん、ありがとうございました。
無事、解決することが出来ました。
1文字ずつチェックしていけばよかったのですね。
いなさん、失礼しました。
これからは、もっと調べて、どうしても分からなかったら、
この掲示板で質問します。
いや、そうゆう意味じゃなかったんだけどなぁ
泣き分かれと言うキーワードさえ伝えておけば
後はサンプルはザクザクなので
煮るなり焼くなりして頂戴みたいな
ツイート | ![]() |