『セル内の文字をシート名にしたい』(なはなは)
はじめまして
シート名をセル内にする関数がありますが逆にセル内の文字をシート名に反映させる方法はありませんか?
ネットで調べたら出来そうだったのですが条件も違うしエラーになって初心者の私には何がどう違うのかわからなかったのでこちらにたどり着きました。
シートは全部で10シートあり、そのうち2〜7シート目のセルを書き換えたらそれをシート名に変えたいんです。
書き換えるセルはO列4行目固定です。
ネットにあった命令文は以下の通りですが2行目でエラーになって止まります。
Dim Ws As Worksheets
For Each Ws In Worksheets
Ws.Active
Activsheet.Name = ActiveCell
Next Ws
Worksheets(1).Active
繰り返しではなくともO4に入力されたら即時シート名が変わるでもいいです。
教えていただけると助かります。
よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
Dim Ws As Worksheets
For Each Ws In Worksheets
Ws.Activate
Activsheet.Name = ActiveCell
Next Ws
Worksheets(1).Activate とありました。 どちらにしても2行目でエラーになります。(型が一致しない) (なはなは) 2026/02/25(水) 13:52:01
> Dim Ws As Worksheets
Dim Ws As Worksheet '←最後の「s」を取る
他にもミスがありますが、誤記だと思うのでスルー。
(半平太) 2026/02/25(水) 14:27:25
>繰り返しではなくともO4に入力されたら即時シート名が変わるでもいいです。
ThisWorkbookに
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Index < 2 Or Sh.Index > 7 Then Exit Sub
If Target.Address = "$O$4" Then
Sh.Name = Target.Text
End If
End Sub
ではどうだろうか?
なお、エラー処理は含めていない(シート名に使えない文字を入力、他のシートと同じ名前など) (ねむねむ) 2026/02/25(水) 14:41:05
ThisWorkbook!!
ありがとうございます。
なりました。
びっくりしました。
ちゃんと指定以外のシートは反映しないんだと感動してます。
内容が半分もわからないので紐解いて勉強したいと思います。
助かりました。感激です。
半平太さんも間違いのヒントをありがとうございました。
(なはなは) 2026/02/25(水) 14:54:11
なはなはさんの回答に補足で
「シート名に使えない文字」はそのまま検索すればすぐ出てきます。 それらの文字を置換する関数もネットに転がっています
Function シート名禁則文字を削除(ByVal 元テキスト As String) As String
Dim Arr禁則文字リスト
Arr禁則文字リスト = Split("',’,?V,*,:,?,\,¥,*,/,:,?,[,[,],],\,/,<,>", ",")
Dim 禁則文字
For Each 禁則文字 In Arr禁則文字リスト
元テキスト = Replace(元テキスト, 禁則文字, "")
Next
シート名禁則文字を削除 = 元テキスト
End Function
上記関数を標準モジュールに記載した上で
>Sh.Name = Target.Text なはなはさんの回答のこの部分を
Sh.Name = シート名禁則文字を削除(Target.Text)
このように変更すれば可能です。
参考サイト: https://www.limecode.jp/entry/utility/illegalcharacters-in-worksheetname ※実行確認はしていませんが、どのようなコードでも基本的な考え方は殆ど同じです
(Asa) 2026/02/27(金) 20:32:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.