初心者ですが、誰かが紹介していたので同じように入れてみました。
入力した登録№がそのままシート名になって便利だなと使っていたのですが、
同じ登録№を入力するとシートの名前変更のところでエラーになってしまいます。
同じシート名なら(2)(3)と連番を付加してエラーにならないようにするには
どうすればよいでしょうか?
Private Sub CommandButton1_Click()
Dim Sheet_Name As String
'入力'
Sheet_Name = InputBox("登録№***を5桁で入力して下さい。「登録用シートが作成され
ます。」 ")
'「キャンセルボタン」または「×ボタン」を押した場合'
If Sheet_Name = "" Then
Exit Sub
Else
End If
'シートのコピー'
Worksheets("書式サンプル").Copy Before:=Worksheets("書式サンプル")
'シートの名前変更'
ActiveSheet.Name = Sheet_Name
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
多分、こんな感じになるのだけれど、
Private Sub CommandButton1_Click()
Dim Sheet_Name As String, chkSH As String
Dim i As Integer
Dim sh As Worksheet
'入力'
chkSH = InputBox("登録№***を5桁で入力して下さい。「登録用シートが作成されます。」 ")
'「キャンセルボタン」または「×ボタン」を押した場合'
If chkSH = "" Then Exit Sub
Sheet_Name = chkSH
CHK:
For Each sh In Worksheets
If sh.Name = Sheet_Name Then
i = i + 1
Sheet_Name = chkSH & "(" & i & ")"
GoTo CHK
End If
Next
'シートのコピー'
Worksheets("書式サンプル").Copy Before:=Worksheets("書式サンプル")
'シートの名前変更'
ActiveSheet.Name = Sheet_Name
End Sub
No.2
- 回答日時:
こんばんは。
少し変わった方法ですが、エラー処理で回避する方法です。
試してないので、エラーになるかも知れませんが、適宜修正して下さい。
最初の方に、下記を記載。
Dim N as Long,Sheet_Name_BackUp as String
On Error GoTo myError
'シートのコピー'
N=1
Sheet_Name_BackUp = Sheet_Name
ActiveSheet.Name = Sheet_Name
On Error Goto 0
Eixt sub
myError:
N=N+1
Sheet_Name = Sheet_Name_BackUp & "(" & N & ")"
Resume
End Sub
エラーが発生すると、myErrorの行へジャンプ
エラー処理をして、Resumeで、エラーの命令に戻る。
少しでも参考になればと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Excel VBA シート名変更時、重複していたら連番を付けたい
その他(Microsoft Office)
-
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
-
4
VBAでシートコピー後、シート名が重複している時の処理
Excel(エクセル)
-
5
シートをコピーして シートに1から連番をふる
Word(ワード)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
エクセルのシートごとに連番を入れたい
Excel(エクセル)
-
8
エクセルVBA ブックを閉じる前に確認メッセージを表示したい
Excel(エクセル)
-
9
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
10
複数シートの特定の位置に連番を振る方法??
その他(Microsoft Office)
-
11
【ExcelVBA】全シートのセルの数式を値に変換する事は可能でしょうか?
Visual Basic(VBA)
-
12
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
13
エクセルVBA シート名を枝番付連番に変更する方法を教えて
Excel(エクセル)
-
14
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルVBAでパスの¥マークに...
-
エクセルの複数シートの保護を...
-
エクセルで前のシートを連続参...
-
EXCELで同一フォーマットのシー...
-
Excelで金銭出納帳。繰越残高を...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルで、「1つ前のシート...
-
VBAでシートコピー後、シート名...
-
別シート参照のセルをシート毎...
-
スプレッドシートの関数VLOOKUP...
-
前の(左隣の)シートを連続参...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
特定のシートの削除を禁止した...
-
VBA セルの値と同じ名前のシー...
-
複数シートの特定の位置に連番...
-
Accessのマクロを使用してExcel...
-
エクセルの数式について ブック...
-
Accessのスプレッドシートエク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルで前のシートを連続参...
-
前の(左隣の)シートを連続参...
-
EXCELで同一フォーマットのシー...
-
VBAでシートコピー後、シート名...
-
Excel 連番を入力する方法
-
エクセル 計算式も入っていない...
-
エクセルで前シートを参照して...
-
エクセルでシート名を自動入力...
-
Accessのスプレッドシートエク...
-
複数シートの特定の位置に連番...
-
エクセルのシート名をリスト化...
おすすめ情報