• ベストアンサー

文字列を見やすくする場合

VB6.0を使っています。 与えた文字列を10文字ごとにスペースを、かつ50文字ごとに改行を入れて、視覚的にすっきりさせたいと考えています。 例えば63文字ある場合、 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 123 といった具合です。 このように決まった文字数の後に文字列を挿入する場合、どのようにしたらよいでしょうか?よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • galoon
  • ベストアンサー率28% (38/133)
回答No.2

#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

gogomama
質問者

お礼

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

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

皆さんのは難しいが、初心者的に 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セルを全体を折り返して表示するにしておく。

gogomama
質問者

お礼

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

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.3

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 あんまりきれいじゃないけれど、参考に。 インデントに漢字空白使ってます。ご注意。

gogomama
質問者

お礼

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

  • galoon
  • ベストアンサー率28% (38/133)
回答No.1

文字列を部分的に抽出しながら任意の箇所に空白を付け加えて際連結するのが簡単でしょうか。 あまり元の文字列が長いと処理時間がかさみますけどね。 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

関連するQ&A

  • TEXTBOXに文字列を表示させたいのだが、スペースで改行してしまう

    困っています。 VB6にてプログラムを作成しています。 簡単なプログラムでTEXTBOXに、改行のない長い文字列を スクロールバーを使わずに折り返して表示させたい のですが、適当なところで勝手に改行されてしまいます。 いろいろと試してみると、スペースからスペースまでの 文字を1つの文字列としているみたいで、その文字列が なるべく折り返さないように、もしスペースがあったら 改行するようです。 つまり文字列にまったくスペースがなければきれいに 折り返して表示されます。 スペースもその文字列として扱ってくれるような方法 はないでしょうか? よろしくお願い致します。

  • リンクさせた文字列を、任意の位置で,複数回数,折り返したい場合・・・

    CONCATENATE+VLOOKUPでリンクさせている文字列を、任意の位置で折り返したい場合・・・ 知恵を貸してください!!! 折り返したい文字数目が毎回変わる場合・・・、 改行したい回数が決まっていない場合・・・、 どのように設定しますか? CONCATENATEで連結する文字列ごとに改行を加える・・・ かつ、VLOOKUPでリンクさせる文字列のみ、途中で何度改行するかが決まっていない・・・ そんなイメージです。 LEN関数を使って作ってみたのですが、 何度改行するかが決まっていないためだと思うのですが、どうしてもうまく作れません。 助けてくださーい。

  • リンクしてきたデータの文字列を折り返すには…???

    リンクして引っ張ってきたデータを、 何文字目で改行するか,その都度決めることはできますか? リンクしてくるデータが、毎回同じ文字数目で改行したいわけではなくて、 今回は8文字目と16文字目で折り返したい… 今回は9文字目と20文字目で折り返したい…など。 ついでに!!! 折り返した文字列の頭に1文字空白を挿入したいのですが。 そんな贅沢でワガママなことはできますか? もしかして、申し上げている意味自体が不明でしょうか?

  • 文字列型変数に1024を超えた文字列を代入した時に

    VBでOracleDBに対してoo4oでクエリーを発行する際、 1024を超える文字列になってしまいました。 実際テストしようとした時、エラーになってしまうので調査したところ、 1024文字を越えた時点で自動的に改行?が入ってしまいクエリーが変なところで切れてしまいます。 何か対応する方法はありますか? ちなみに文字列変数を2・3作成し、後で1つにまとめると言うこともやってみたんですが、結果が同じで。。。

  • 【VB】文字列操作についてお願いします。

    お世話になっております。 VB2005です。 ある文字列の最後の行の改行を取りたいのですが、何かよい方法はありますでしょうか。 あいうえお かきくけこ さしすせそ とあったら、"さしすせそ"のあとの改行をすべて取りたいのです。 よろしくお願いします。≦(._.)≧ ペコ

  • 文字列に\nを入れたい

    データベースAccessからデータを取得しTextFieldにその取得したデータを表示させたのですが、文字数が長くてTextFieldに収まらなくなっしてしまいました。そこで取得した文字列に新たに\nを入れて改行させようとしています。 String str = "文字列40字以上…" if(str.length >= 40){ ***処理内容*** 文字列が40字以上なら40文字目のすぐ後ろに\nを足して改行させて表示させたい。 ただし、40文字目を区切りとして改行させ表示させる。例)96文字なら3行に表示させるようにする。 } このような処理を行いたいのですが、良い方法がわかりません。アドバイスをお願いします。

  • VBAのコマンドボタンの文字列の改行方法は?

    EXCEL2000のVBAでコマンドボタンを使っていますが、ボタンの横サイズは大きくできないときに、ボタンの文字列(caption)が長いので表示が途中で切れてしまう。WordWrapをtrueにすると改行するが、任意の文字位置で改行できない。スペース文字を途中で挿入して改行位置を調整しようとしてもうまくいかない。任意の位置で改行する方法はありますか。

  • 文字列を一定文字数で挿入もしくは、改行。

    文字列を一定文字数で挿入もしくは、改行する方法、 関数はあるでしょうか? たとえば、 あめんぼ、赤いなあいうえお を8文字ずつで改行したいのですが、 方法が分かりません。 あめんぼ、赤いな あいうえお 最初は、mb_substrで改行する文字を調べて 改行タグを入れれば、とたかをくくっていた んですが、同じ文字を入力されていたら、変な 所で改行されてしまうと、気がつきました。^^; 「あ=><br>あ」にすると、一文字目の”あ”も 指定されてしまって。 改行するデータは、常に変わり予想はできません。 FORMからの入力を想定しているので、最悪 <textarea wrap="hard">で送信時に強制改行しても いいかなーとは、思っていますが、PHPで処理できるで しょうか?

    • ベストアンサー
    • PHP
  • 文字列を分割

    PHP4で、60バイト以上ある文字列を、60バイト度に改行を挿入したいのですが方法がわかりません。。 何か良い方法をご存知の方がいらっしゃれば、 教えて頂けますか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 同文字列の削除方法

    vb6でプログラムを書いているのですが,同文字列がある場合削除し出力するプログラムの書き方がわかりません・・・. 例えば,se a sa a se aa →se a sa aa という様に出力したいです.(一つ一つの文字列の後には入力・出力共に半角スペースがあります.) 宜しくお願いします.

専門家に質問してみよう