重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VB6.0を使っています。
与えた文字列を10文字ごとにスペースを、かつ50文字ごとに改行を入れて、視覚的にすっきりさせたいと考えています。
例えば63文字ある場合、
1234567890 1234567890 1234567890 1234567890 1234567890
1234567890 123

といった具合です。
このように決まった文字数の後に文字列を挿入する場合、どのようにしたらよいでしょうか?よろしくお願いいたします。

A 回答 (4件)

#1です


失礼しました、改行入れ忘れました。

Sub 文字列再構成()
Dim cnt As Integer
Dim mae, ato, tmp As String
'' 元の文字列
mae = "012345678901234567890123456789012345678901234567890123456789012"
'' 結果文字列
ato = ""
'' 改行タイミング
cnt = 1
'' 元の文字列が処理し終わるまで繰り返し
Do While 0 < Len(mae)
'' 10文字以上あれば切り離し
If 10 <= Len(mae) Then
tmp = Left(mae, 10)
mae = Right(mae, Len(mae) - 10)
'' 10文字未満の場合はすべて
Else
tmp = mae
mae = ""
End If
'' 直前が改行文字ではなく、すでに切り離しをしていたら区切り文字(スペース)を追加する。
If 0 < Len(ato) And Right(ato, 1) <> Chr(10) Then
ato = ato & " "
End If
'' 切り離した文字を追加する。
ato = ato & tmp
'' 5回処理ごとに文字に達したら改行を入れる
If Len(tmp) = 10 And cnt Mod 5 = 0 Then
ato = ato & Chr(13) & Chr(10)
End If
cnt = cnt + 1
Loop
'' 結果表示
MsgBox ato
End Sub
    • good
    • 0
この回答へのお礼

大変遅くなって申し訳ありませんでした。改行のタイミングと、10文字以下のときの処理が大変分かりやすかったです。ありがとうございました。

お礼日時:2005/11/12 05:46

皆さんのは難しいが、初心者的に


Sub test01()
s = ""
a = "a1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
For i = 1 To Len(a) Step 10
If i > 1 And (i - 1) Mod 50 = 0 Then s = s & Chr(10) & Chr(13)
'------
s = s & Mid(a, i, 10) & " "
Next i
Cells(1, 1) = s
End Sub

エクセルへセットしたためCells(1, 1) = s になってます。
その場合、A1セルを全体を折り返して表示するにしておく。
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありません。短いコードで分かり易かったです。ありがとうございました。

お礼日時:2005/11/12 05:54

Private Sub Form_Click()


Dim a
Dim b

 a = "abcdefghijkmnopqrstuvwxyz123456789012345678901234567890123"

 ReDim b(0)
 Do
  If Len(a) > 10 Then
   b(UBound(b)) = Left(a, 10)
   a = Mid(a, 11)
   ReDim Preserve b(UBound(b) + 1)
  Else
   b(UBound(b)) = a
   Exit Do
  End If
 Loop
 a = Join(b, Space$(1))

 Print a

End Sub

あんまりきれいじゃないけれど、参考に。
インデントに漢字空白使ってます。ご注意。
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありませんでした。参考にさせていただきました。ありがとうございます。

お礼日時:2005/11/12 05:48

文字列を部分的に抽出しながら任意の箇所に空白を付け加えて際連結するのが簡単でしょうか。


あまり元の文字列が長いと処理時間がかさみますけどね。

Sub 文字列再構成()
Dim mae, ato, tmp As String
'' 元の文字列
mae = "012345678901234567890123456789012345678901234567890123456789012"
'' 結果文字列
ato = ""
'' 元の文字列が処理し終わるまで繰り返し
Do While 0 < Len(mae)
'' 10文字以上あれば切り離し
If 10 <= Len(mae) Then
tmp = Left(mae, 10)
mae = Right(mae, Len(mae) - 10)
'' 10文字未満の場合はすべて
Else
tmp = mae
mae = ""
End If
'' すでに切り離しをしていたら区切り文字(スペース)を追加する。
If 0 < Len(ato) Then
ato = ato & " "
End If
'' 切り離した文字を追加する。
ato = ato & tmp
Loop
'' 結果表示
MsgBox ato
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!