- ベストアンサー
VBAで複数のシート名を置換する処理
Dim ws As Worksheet Dim i As Long For i = 1 To ThisWorkbook.Sheets.Count For Each ws In ThisWorkbook.Sheets If ws.name Like "*T*" Then ws.name = Replace(ws.name, "T", "S") End If Next Next End Sub この処理をするとnameメソッド失敗worksheetオブジェクト 処理できるようにするにはどうすればいいんでしょうか
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 If文は不要ではないでしょうか。 その1 Dim ws As Worksheet For Each ws In Worksheets ws.Name = Replace(ws.Name, "T", "S") Next その2 Dim i As Long For i = 1 To Sheets.Count Sheets(i).Name = Replace(Sheets(i).Name, "T", "S") Next
その他の回答 (1)
- mt2008
- ベストアンサー率52% (885/1701)
変更後のシート名がすでに使われていないかどうかはチェックした方が良いと思います。 Sub Sample() Dim ws As Worksheet Dim sName As String Dim rtn '*** 変更後のシート名がダブらないかチェック For Each ws In Worksheets sName = Replace(ws.Name, "T", "S") If sName <> ws.Name Then On Error Resume Next rtn = 0 rtn = Sheets(sName).Index If rtn <> 0 Then MsgBox ("変更後のシート名(" & sName & ")と同名のシートが存在しています") Exit Sub End If On Error GoTo 0 End If Next '*** シート名変更 For Each ws In Worksheets ws.Name = Replace(ws.Name, "T", "S") Next End Sub