エクセルVBAについて質問です。

ブック内にあるすべての灰色(デフォルトの色)のシートについて、
シート名にある「ももんが」という文字を全て「とびうお」という言葉に
置換するというマクロを作成してください。

なお、下記の点にご留意ください。
①質問者は初心者なので、下記の回答者の方のように、
 それぞれのマクロがどう働くか「’」をもちいて説明してください。
  http://q.hatena.ne.jp/1190870363
②マクロは貼り付けてすぐに動くものをお願いします。
③質問が不明瞭でしたらコメントでご確認ください。

以上、よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2008/01/03 17:04:42
  • 終了:2008/01/03 21:18:53

回答(1件)

id:Penyan No.1

Penyan回答回数44ベストアンサー獲得回数72008/01/03 17:38:12

ポイント80pt

明けましておめでとう。毎度様です。

Sub Macro()
    'シート1つのオブジェクト
    Dim mySheet
    
    'For Eachを使ってすべてのシートから一つづつmySheetとして取り出します。
    For Each mySheet In Worksheets
        
        'タブの色が色無し(-4142)かどうかを調べます。
        If mySheet.Tab.ColorIndex = -4142 Then
            
            'シートの名前を置換します。
            mySheet.Name = Replace(mySheet.Name, "ももんが", "とびうお")
        End If
    Next
End Sub
id:taroemon

あけましておめでとうございます。

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


おかげさまでほぼ完璧にうまくいきました。

ただ、ひとつだけ手直ししていただきたいのですが、

文字列を空白に置換するという場合、

たとえば「ももんが」をシート名から削除した場合、

エラーが出てしまいます。

お手数ですがこれだけお時間のあるときに手直ししてください。


今年もよろしくお願いします。

2008/01/03 17:56:11
  • id:SALINGER
    エラーが出るのは文字列を置換することでシート名が空白になったり、同じ名前のシートができる場合などがあります。
    置換するコードをエラーが出たら処理しないようにすればいいですね。

    On Error Resume Next
    mySheet.Name = Replace(mySheet.Name, "ももんが", "とびうお")
    On Error GoTo 0

  • id:taroemon
    SALINGERさん
    コメントありがとうございます。
    望んでたとおりできました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません