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

Sub 実消去()
'
' 実消去 Macro
'

'
Cells.Replace What:="実", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
はじめまして。
上記のマクロなんですがいざ実行してみると機能しないのですがなぜでしょうか?
すべてのブックの"実"の文字だけを消去したいのですが何がいけなかったのでしょうか?
わたしの勉強不足で申し訳ないのですがどなたかご教授のほどよろしくお願いします。

A 回答 (3件)

マクロを実行したのはどこからですか?


マクロは恐らく標準モジュールに記載されていると思いますが、ワークシートからマクロ呼び出しで行う場合と、現在の標準モジュールから実行する場合とでは動作が異なります。
No.1の方も仰られているようにワークシートの指定がありませんので、正常に動作しないのです。
全てのワークシートに行うのであれば、ワークシート数でループすれば良いでしょうし、特定のワークシートのみを対象にするのであればワークシートを固定で指定しましょう。
①シート1のみを対象とする場合
 Sheets(1).Cells.Replace What:="実", Replacement:=""
②呼び出し元のシートを対象とする場合
 ActiveSheet.Cells.Replace What:="実", Replacement:=""
③全シートを対象とする場合
 Dim objSh As Worksheet
 For Each objSh In Worksheets
  objSh.Cells.Replace What:="実", Replacement:=""
 Next
といったところでしょうか。
    • good
    • 0

他の方と同じことを違った見方で書いていますが、マクロ自体の問題ではなくて、書かれている所が、標準モジュールではなくシートモジュールに書かれているとしか思えません。



Cells.Replace
という意味は、(親オブジェクト).Cells.Replace という意味ですから、

標準モジュールでは、
ActiveSheet.Cells.Replace になりますが、他のシートモジュールでは親オブジェクトを省略すると、そのモジュールのシートのみになります。

したがって、既存のマクロは、特別なものを除き、標準モジュールに移動したほうがよいです。
    • good
    • 0

置換の対象は、アクティブシートのみです。


よって、すべてのブックのすべてのシートを対象に繰り返し処理を行う必要があります。
    • good
    • 0

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