• ベストアンサー

Excel VBAで改行マークを削除する方法

先日QNo.1801087で質問させていただいた件の続きです。 http://okwave.jp/kotaeru.php3?q=1801087 ユーザーフォームのテキストボックスに入力されたデータを複数のセルに入るように教えて頂きました。それは上手く行ったのですが、改行マークが(・)入ってしまって、その後の処理に問題が生じてしまうので、改行を削除するコードを記述しましたが、はじめの「0」が消えてしまって困ってます。  A1 942158621c9c05011020010a03020907・  A2 00054000・ Columns("A:A").Select Selection.Replace what:="" & Chr(13) & "", replacement:="" データは数字とアルファベットがランダムに並んでおり、全て文字列です。 A2のように数字のみの場合もあり、「0」から始まる時もあり、この「0」が一緒に削除されて「54000」となってしまいます。 上手く改行だけを削除し、「00054000」と文字列にするにはどうしたら良いのでしょうか。 Win2000、Office2003です。 よろしくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。Wendy02です。 >http://okwave.jp/kotaeru.php3?q=1801087 >それは上手く行ったのですが、改行マークが(・)入ってしまって うまくいっていないと思います。 # そのどちらかで区切ったら、片方が残ってしまいます と前回書きましたが・・・。 TextBox の改行コードは、CrLf つまり、Chr(10) と Chr(13)と二つあります。その片方で区切れば、片方が残ると、と書いたわけです。私の書いたものは、分っていらっしゃらなかったようです。 Private Sub CommandButton1_Click()   Dim buf() As String   If TextBox1.Text <> "" Then    buf = Split(TextBox1.Text, vbCrLf)    With Range("A1").Resize(UBound(buf) - LBound(buf) + 1)      .NumberFormatLocal = "@"      .Value = WorksheetFunction.Transpose(buf)    End With   End If End Sub

ruru_gold
質問者

お礼

すみません、前回Wendy02さんのコードが難しく他の方に教えていただいた方法でやっておりました。 今回こちらで試したところできました。今後勉強いたします。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 回答としては、#1 の方のもので良いと思いますが、前回のご質問に 絡んでコメントすると、、 1. テキストボックスで手入力した改行コードは vbCrLf = Chr(13)   -->セル内改行のあるセルの値を代入した場合は vbLf 2. セル内改行の改行コードは vbLf = Chr(10) です。改行コードで Split を使って配列にバラすときには、この 改行コードの違いに気をつけて下さい。 例えば、改行を含むテキストの変数が TEST で改行コードが vbLf なら aryTEST = Split(TEST, Chr(10)) ' Chr(10) = vbLf で配列 aryTEST にバラすと、改行コードはこの時点で消えている ハズです。 改行コードが残っているのであれば、Split に渡す改行コードが 違っていたか、他に原因がありそうです。 例えば、 vbLf と vbCrLf の混在とか。 つまり、前回のご質問では、 vbCrLf の混在する可能性を考慮し、 改行コードをそろえてから Split した方が良いかもしれません。 a = TextBox1.Text a = Replace(a, Chr(13), Chr(10)) '<--- 追加 s = Split(a, Chr(10)) みたいな感じ。 はずしてたら、スルーして下さい。

ruru_gold
質問者

お礼

ありがとうございます。参考にいたします。

すると、全ての回答が全文表示されます。
  • s___o
  • ベストアンサー率35% (108/306)
回答No.1

改行を削除する前に、セルの書式設定を「文字列」にしてはどうでしょう? Columns("A:A").Select Selection.NumberFormatLocal = "@" '書式設定(文字列) Selection.Replace what:="" & Chr(13) & "", replacement:="" 動作確認をしてないので、確かめてみてください。

ruru_gold
質問者

お礼

文字列にしてもやっぱりだめでした。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A