重要なお知らせ

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

【GOLF me!】初月無料お試し

初心者です。
下記モジュールで”あいうえお”を消しているのですが
凄く動きが遅いです。
もう少し高速に処理できる方法があれば教えてください。
(C2:C200)のセルには必ず各文の末尾に”あいうえお”が入力されている状態です。

Sub 文削除()
'余計な分削除する

Dim rg As Range

For Each rg In Range("C2:C200")
rg.Value = Replace(rg.Value, "あいうえお", "")
Next

End Sub

A 回答 (3件)

>必ず各文の末尾に”あいうえお”が入力されている状態です。



For Each がベストな参照方法かと思います。(他の方法よりも高速)
末尾というなら、Replaceから別の方法に変更した場合はいかがでしょうか?

For Each rg In Range("C2:C200")
' n は、"あいうえお" に相当する文字数 
rg.Value = Left(rg.Value ,Len(rg.Value ) - n )
Next

この回答への補足

「因数が不足です」というエラーが出てしまうのですが、どうしてでしょうか・・・?
実際、”あいうえお”に相当する文字数は30字です。

補足日時:2008/12/10 19:27
    • good
    • 0
この回答へのお礼

なるほどこんな方法があるんですね
ありがとうございました。使わせていただきます。

お礼日時:2008/12/09 10:20

No.2です。


こちらで試した所、1セルに500文字あったとしてもReplace漏れはありませんでした。
漏れたセルに何か共通点はありませんか?
あるいは「あいうえお」に相当する文字列が一見同じに見えて全角半角が異なっているとか……。
    • good
    • 0

ループを回す必要はないのでは?


こんな感じで↓一発で
Sub Sample()
 Range("C2:C200").Select
 Selection.Replace What:="あいうえお", Replacement:=""
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。試してみたところ、なぜか200行全てに対して削除できず、一部はあいうえおが残った状態になってしまいます。

C列には1つのセルに500文字ほどの文章が入力されています。

お礼日時:2008/12/10 19:49

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