重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

マクロを使ってセル内の文章に「。」「?」がある時に改行をさせたいです。

そこで、マクロの記録で置換をさせました。

いざマクロを実行すると「。」「?」がある時は問題はありません。

但し、セル内に「?」がないと実行時エラー91が出ます。

もちろん、「?」がないので当然と言えば当然ですよね。

そこで、質問ですが、この場合、実行時エラー91(終了・デバック)を無視するというかそのまま終了させるにはどうすればいいのでしょか?

いちいちエラーのウインドウが開いて終了をクリックするのが面倒です。

当方、マクロとか全然詳しくないので具体的に教えていただけないでしょうか?

よろしくお願いします。


Sub 改行()
'
' 改行 Macro
'
Cells.Find(What:="?", After:=ActiveCell, LookIn:=xlFormulas2, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False).Activate
Cells.Replace What:="?", Replacement:="?" & Chr(10) & "" & Chr(10) & "", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

Cells.Find(What:="。", After:=ActiveCell, LookIn:=xlFormulas2, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False).Activate
Cells.Replace What:="。", Replacement:="。" & Chr(10) & "" & Chr(10) & "", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

End Sub

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

  • Cells.Find(What:="?", After:=ActiveCell, LookIn:=xlFormulas2, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , MatchByte:=False, SearchFormat:=False).Activate

    この部分を削除したらエラーが出なくなりました。

    ママチャリさんありがとうございました。

    それと「A1」のセルだけを選択して置換させたいです。

    他のセルも一緒に置換されてしまいます。

    すいませんが教えていただけないでしょうか?

    よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/12/28 16:07

A 回答 (5件)

「Cells」を「Range("A1")」に書き換えるんです。


こうです!!

Range("A1").Replace What:="?", Replacement:="?" & Chr(10) & "" & Chr(10) & "", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    • good
    • 0
この回答へのお礼

ママチャリさん。

何度もありがとうございます。

上手くできました。

本当に感謝します。

お礼日時:2020/12/28 16:55

こんにちは



理解できないものは、振り回さないほうが宜しいかと思いますよ。

とはいえ、一応
Cells(1, 1).Replace What:="?", Replacement:="?" & String(2, 10)
    • good
    • 1

マクロが分からにのは分かりました。

引き続き、勉強してくださいね。

コンパイルエラーとのことですが、どのように書いたのですか?
書いたコードを補足に貼ったりすると解決が早いですよ。

ちなみんみ、こちらの想定では、こんな感じを期待していたのですが・・・。

Range("A1").Replace ・・・
    • good
    • 0
この回答へのお礼

ママチャリさん、本当にすいません。

Cells.Findを消したら実行時エラー91は出なくなりました。


それとRange("A1")を以下のように書いたらコンパイラーエラーがでました。

これではダメなのでしょうか?



Sub 改行()
'
' 改行 Macro
'

'
Range("A1").Replace

Cells.Replace What:="?", Replacement:="?" & Chr(10) & "" & Chr(10) & "", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2


Cells.Replace What:="。", Replacement:="。" & Chr(10) & "" & Chr(10) & "", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2


End Sub

お礼日時:2020/12/28 16:40

「Cells.Find」や「Cells.Replace」の「Cells」は、シート上のすべてのセルを表しています。

なので、ここをA1セルのみ指定すればOKです。
A1セルを指定するには、「Range("A1")」 と書きます。

それにしても・・・。
>当方、マクロとかよく分かりません。
>(Cells.Find)のことも知りません。
・・・やる気、あるんですよね?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

すいません。やる気がないわけではないのですが、マクロとかほとんど使ったことがありません。

教えていただいた

Range("A1")

これを入力したらエラーです。

コンパイラーエラー
プロパティの使い方が不正です。

とでました。

何がいけないでしょうか?

お礼日時:2020/12/28 16:20

「On Error ステートメント」を書けば、エラーを無視することはできます


が、その前に考えるべきことがあるような気がします。
置換の前に検索(Cells.Find)をしているようですが、これって必要ですか?
もし不要であれば、消しちゃった方が良いですよ。そうすれば、エラーも解消しそうだし・・・。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

当方、マクロとかよく分かりません。

開発⇒マクロの記録する。

それからコードを見ていました。

(Cells.Find)のことも知りません。


それと、あとすいません。

「A1」のセルだけを選択して置換させるにはどうすればいいかも教えてください。

お礼日時:2020/12/28 15:46

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