dポイントプレゼントキャンペーン実施中!

先日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です。
よろしくお願いいたします。

A 回答 (3件)

こんばんは。

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/09 11:28

こんにちは。

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))

みたいな感じ。

はずしてたら、スルーして下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/09 11:28

改行を削除する前に、セルの書式設定を「文字列」にしてはどうでしょう?



Columns("A:A").Select
Selection.NumberFormatLocal = "@" '書式設定(文字列)
Selection.Replace what:="" & Chr(13) & "", replacement:=""

動作確認をしてないので、確かめてみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/09 11:26

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