ここから本文です

アクティブシート名(現時点では、シート名"A(3))を"A"としたいのですが 下記マク...

gri********さん

2016/4/1217:55:09

アクティブシート名(現時点では、シート名"A(3))を"A"としたいのですが
下記マクロでは名前が同じシートがある時にエラーがでます。

Sub Sample1()
ActiveSheet.Name = "A"
End Sub

同じ名前のシートがある場合、元々の"A"を"A(2)"など重複しないシート名にしたいです。

ご教授願います。

閲覧数:
37
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

2016/4/1220:21:02

>同じ名前のシートがある場合、元々の"A"を"A(2)"など重複しないシート名にしたいです。
もし、「A(2)」もあったらどうしたいのですか?
以下は、「A(1)」から連番でチェックして、存在しないシート名に変更する例です。

Sub Sample1()
Dim i As Integer
Dim ws As Worksheet
Set ws = IsSheet("A") 'シートが存在するかどうかチェック
If Not ws Is Nothing Then '存在する場合
i = 1 '1から順に
Do
If IsSheet("A(" & i & ")") Is Nothing Then '連番のついたシートが存在しなければ
ws.Name = "A(" & i & ")" 'シート名を変更
Exit Do
End If
i = i + 1
Loop
End If
ActiveSheet.Name = "A" '対象シートの名前を変更
End Sub

'指定されたシートが存在するかチェックする関数
'存在する場合はそのシートを返す
'存在しない場合はNothing
Function IsSheet(SheetName As String) As Worksheet
Dim ws As Worksheet
Set IsSheet = Nothing

For Each ws In ActiveWorkbook.Worksheets
If ws.Name = SheetName Then
Set IsSheet = ws
Exit Function
End If
Next

End Function

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

2016/4/1220:42:30

Sub Sample1()
Dim i As Long
On Error Resume Next
ActiveSheet.Name = "A"
Do While Err.Number <> 0
i = i + 1
On Error Resume Next
ActiveSheet.Name = "A(" & i & ")"
Loop
On Error GoTo 0
End Sub

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる