- ベストアンサー
文字列を見やすくする場合
VB6.0を使っています。 与えた文字列を10文字ごとにスペースを、かつ50文字ごとに改行を入れて、視覚的にすっきりさせたいと考えています。 例えば63文字ある場合、 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 123 といった具合です。 このように決まった文字数の後に文字列を挿入する場合、どのようにしたらよいでしょうか?よろしくお願いいたします。
- みんなの回答 (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
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
皆さんのは難しいが、初心者的に 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セルを全体を折り返して表示するにしておく。
お礼
遅くなって申し訳ありません。短いコードで分かり易かったです。ありがとうございました。
- Kuppycat
- ベストアンサー率50% (109/216)
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 あんまりきれいじゃないけれど、参考に。 インデントに漢字空白使ってます。ご注意。
お礼
遅くなって申し訳ありませんでした。参考にさせていただきました。ありがとうございます。
- galoon
- ベストアンサー率28% (38/133)
文字列を部分的に抽出しながら任意の箇所に空白を付け加えて際連結するのが簡単でしょうか。 あまり元の文字列が長いと処理時間がかさみますけどね。 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
お礼
大変遅くなって申し訳ありませんでした。改行のタイミングと、10文字以下のときの処理が大変分かりやすかったです。ありがとうございました。