- ベストアンサー
エクセルのセルに名前を入力するだけで自動的にそのシートタブもその名前に
- エクセルのセルに名前を入力すると、そのシートタブの名前も自動的に変更される方法について教えてください。
- また、シートの色も変更できれば良いのですが、方法を教えていただけますか?
- よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ALT+F11でVBE画面を開く 当該のブックのVBAProjectの中のThisWorkbookをWクリックする 今のマクロの記述を全て消して,下記をコピーして差し替える Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim n As Long If Target.Count > 1 Then Exit Sub If Target.Address <> "$A$1" Then Exit Sub If Target = "" Then Exit Sub n = 0 On Error GoTo nextnum Sh.Name = Application.Substitute(Target & Format(n, "(0)"), "(0)", "") Sh.Tab.ColorIndex = 20 On Error GoTo 0 Exit Sub nextnum: n = n + 1 Resume End Sub マクロは拝見しましたが,たとえば「複数のセルに同時に記入する」「つるつるっとオートフィルドラッグでコピーする」みたいな操作をすると,エラーが起こりますね。 また,今あなたのお手許で「どんな具合に動かなくなっている」のか具体的な症状についても説明が不足していますので,どこでミスってるのか特定は難しいです。網羅的に思いつく所を全部書きますから,全て確認してください。 マクロのセキュリティは中にしていますか マクロを有効にしてブックを開いてますか マクロの登録の手順は教わった通りにしましたか 実際にはシートに結合セルがあったりとかで,そもそも今動かしているマクロはご質問に掲示されたそのマクロでは無いハズですね。ウソ情報はやめて今動かしている本当のマクロを提示し,直し間違えたりしてないかも皆さんにアドバイスして頂くのが良いのではないでしょうか。
補足
下記を 「1」 とします。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Cells = Range("A1") And Range("A1") <> "" Then ActiveSheet.Name = Range("A1").Value End If End Sub 下記を 「2」 とします。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim n As Long If Target.Count > 1 Then Exit Sub If Target.Address <> "$A$1" Then Exit Sub If Target = "" Then Exit Sub n = 0 On Error GoTo nextnum Sh.Name = Application.Substitute(Target & Format(n, "(0)"), "(0)", "") Sh.Tab.ColorIndex = 20 On Error GoTo 0 Exit Sub nextnum: n = n + 1 Resume End Sub お忙しいところご指導いただき有難うございます。 「1」はテストしてうまく作動しました。 今度はわざと A1 を変更するとシート名が変わらず再度テストしても変わらないために質問させていただきました。 その後 「2」の回答を得て「1」「2」ともどもテスト A1 の変更後何度かテストしました。 そうすると両方とも A1 を変更してもシート名も変更するようになり ました。 別に嘘などをついたりはしていません。 ご迷惑は掛けましたことは誠に申し訳ありません。 今後ともよろしく御願いします。