プロが教えるわが家の防犯対策術!

すみません。
先程、
エクセルで同じ行中にある先頭の改行スペースを消したい(文字の書き出しを先頭に持ってゆきたい)

という質問に
マクロを使ってとお答えいただき、テストではうまくいったのですが・・・
いざ、本番に使おうとしたら、ダメでした??

何故なのでしょうか?

全く同じ操作を行ったのですが・・・

お分かりの方、教えてください。

「先程「エクセルで同じ行中にある先頭の改行」の質問画像

質問者からの補足コメント

  • うれしい

    tom04さん
    本当にありがとうございます。
    置換で半角スペースを消してから、最初に頂いたプログラムでマクロしてみたらできました。
    やっぱり、先頭に半角スペースが入っていて、これがプログラムを止めていたようです。

    他の文章の半角スペースは詰まってしまいましたが、でも、これでも十分に使えそうなので、これでやってみます。

    本当に感謝です。

    でも、こんなことできるんですね。
    ありがとうございます。

    「先程「エクセルで同じ行中にある先頭の改行」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2017/11/30 21:02

A 回答 (2件)

No.1です。



>先頭に半角スペースや全角スペース等のスペースが入っていました。
あぁ~~~!だったら全く反応しませんね。

↓のコードではどうでしょうか?

Sub Sample3()
Dim k As Long, c As Range, myStr As String, buf As String
Application.ScreenUpdating = False
For Each c In Selection
If c <> "" Then
buf = Trim(c)
k = 1
If Left(buf, 1) = vbLf Then
Do Until Mid(buf, k, 1) <> vbLf
k = k + 1
Loop
End If
myStr = Mid(buf, k, Len(buf))
For k = 1 To Len(myStr)
If Mid(myStr, k, 2) = vbLf & vbLf Then
myStr = Replace(myStr, Mid(myStr, k, 2), vbLf)
End If
Next k
c = myStr
End If
Next c
ActiveSheet.Rows.AutoFit
Application.ScreenUpdating = True
End Sub

※ セルの頭、もしくは末尾のスペースには対応できると思います。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
おかげさまで、半角スペースを置換削除した後、一番最初のプログラムでやってみたところ
上手くゆきましたので、今回のデータは試してはいませんが、次に同じ問題が起きた時
※必ずできてしまうのですが・・・
このデータを使ってみますね!
ありがとうございます。
ベストアンサーに入れさせて頂きますね!

お礼日時:2017/12/01 00:19

こんばんは!



前回回答した者です。

>いざ、本番に使おうとしたら、ダメでした??

対象セルを範囲指定し、マクロを実行されたのでしょうか?
もしくは空白セルがあればそこのでマクロをやめるようなコードにしていたので
空白セルも範囲指定に含まれていたというコトはないでしょうか?

今回は頭の改行だけでなく途中の改行も消すようなコードにしてみました。
前回のコードはすべて消去し、↓のコードに変更してみてください。

Sub Sample2()
Dim k As Long, c As Range, myStr As String
If Selection.Count > 1000 Then Exit Sub
Application.ScreenUpdating = False
For Each c In Selection
If c <> "" Then
k = 1
If Left(c, 1) = vbLf Then
Do Until Mid(c, k, 1) <> vbLf
k = k + 1
Loop
End If
myStr = Mid(c, k, Len(c))
For k = 1 To Len(myStr)
If Mid(myStr, k, 2) = vbLf & vbLf Then
myStr = Replace(myStr, Mid(myStr, k, 2), vbLf)
End If
Next k
c = myStr
End If
Next c
Application.ScreenUpdating = True
End Sub

※ 極端に広い範囲を指定してしまうと「応答なし」の状態になりますので、
セル選択は1000セル以内に限定しています。
すなわち列全体とか行全体を範囲指定するのではなく
対象セルを絞って範囲指定して、マクロを実行してください。

今回は空白セルが含まれていても大丈夫です。m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
空白セルではないのですが、
先頭に半角スペースや全角スペース等のスペースが入っていました。
それでできなかったのかもしれません。

また、頂いた上記プログラムをマクロに入れてみましたが、これはうまくいかない様でした。

何度もすみません。

お礼日時:2017/11/30 20:51

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