Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2013)
複数のシート名変更
投稿日時: 20/12/30 12:28:54
投稿者: あまあま
メールを送信

シー名が2A(1)、2A(2)、2A(3)、2B、2B(2)、2B(2)、・・・とつけられています。
すべてのシート名から(1)を取りたいと思い、次のように考えましたが、うまくいきません。どなたかご教示ください。
Dim ws As Worksheet
Dim ws_Name As Integer
 
For Each ws In Worksheets
ws.Select
ws_Name = ActiveSheet.Name Like "2*(1)"
 If ws_Name = True Then
     ws_Name = ActiveSheet.Name Like "2*"
 Else
 MsgBox "ありません。"
End If
Next ws

回答
投稿日時: 20/12/30 12:42:58
投稿者: simple

Sub test()
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name Like "*(1)" Then
            ws.Name = Replace(ws.Name, "(1)", "")
        End If
    Next ws
End Sub
こういった書き方になると思います。
条件判定せずに実行しても同じ結果が得られるとは思います。学習の便宜のために入れています。
 
なお、(1)を削除したときに同名のシートがすでにあるとエラーになりますので、
それには注意が必要です。(上記は、そうしたことが無い前提です)

投稿日時: 20/12/30 12:48:56
投稿者: あまあま
メールを送信

ありがとうございました。
simpleさんの回答例でできました。
すみません、勉強不足で