
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
この回答へのお礼
お礼日時:2005/11/12 05:46
大変遅くなって申し訳ありませんでした。改行のタイミングと、10文字以下のときの処理が大変分かりやすかったです。ありがとうございました。
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セルを全体を折り返して表示するにしておく。
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
あんまりきれいじゃないけれど、参考に。
インデントに漢字空白使ってます。ご注意。
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
エクセル 数値データを桁をそ...
-
同一セル内に関数と文字列を同...
-
VBAでの Replace関数で、ワイル...
-
VBの「As String * 128」とは?
-
エクセルマクロで複数ある特定...
-
エクセルで文字列の最大値を抽...
-
VBA2005 16進を2桁で表示したい。
-
LEFT関数で文字数を指定しない...
-
VBで簡易シーザー暗号の作成...
-
Msgboxの×が押されたとき
-
【COBOL】文字列から数値項目に...
-
エクセルで文字列をtxtファイル...
-
VBscriptからバッチに変数を渡...
-
VBA テキストボックスの計算
-
アクセスで特定の数字以外(複...
-
Excelで指数表現しないようにす...
-
Cシェルでの文字列大小比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
Excelで3E8を3.00E+8にしない方...
-
Left関数とRight関数を合わせた...
-
アクセスで特定の数字以外(複...
-
Msgboxの×が押されたとき
-
MS SQLServer のSQLで文字列の...
-
Excelで指数表現しないようにす...
-
ORCLEでの小数の表示方法の変更...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
SQL の Update文(?) と ...
-
VBの「As String * 128」とは?
-
aaa.bbb.ccc という、「ドット...
-
同一セル内に関数と文字列を同...
おすすめ情報