- ベストアンサー
EXCELの。。。
EXCEL97を使用しているのですが セルの値をSHEET名に反映させたいのですが どのようにしたらよいでしょう? 申し訳ありませんがよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VBAで処理する方法でも宜しければ、次の方法で操作してみてください。 このコード例では、各シートのセルA1に入力した内容が、そのシートの シート名になります。 (特定のシートのみ機能させることも出来ますので、必要あれば書き込んでください。) 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.プロジェクトウィンドウ(表示されていなかったらCtrl+R)で ThisWorkbook をダブルクリックします。 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 Private Sub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Target As Range) Dim s As Integer Dim chk As Boolean Set Target = Target.Resize(1.1) If Target.Address <> "$A$1" Then Exit Sub If Target.Value = "" Or LenB(Target.Value) > 31 Then Exit Sub For s = 1 To Len(Target.Value) If InStr(":\/?*[]", Mid(Target.Value, s, 1)) > 0 Then MsgBox "シート名に使えない記号が含まれています。", vbQuestion Exit Sub End If Next s For s = 1 To Sheets.Count If s <> ActiveSheet.Index And _ StrConv(Sheets(s).Name, vbLowerCase) = _ StrConv(Target.Value, vbLowerCase) Then chk = True Exit For End If Next s If chk = False Then ActiveSheet.Name = Target.Value Else MsgBox "そのシート名は、すでに存在します。" End If Set Target = Nothing End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
基本は Sub test01() ActiveSheet.Name = Range("a1") とか Worksheets("sheet1").Name=Cells(1,1) End Sub でしょう。 (1)どういうキッカケでセットするのか。コマンドボタンでも貼りつけクリックするのか。 (2)シート名にセットする値のあるセルは1シートにあるのか。複数に跨っているのか。 (3)名前をセットしたいシートは複数か。 そういったことが、回答するには必要かと思います。
- rara_sun
- ベストアンサー率50% (271/539)
シート名の直接命令を入力できないので、 マクロを作るなどすればできます。 ソースコードの雰囲気としては・・。 SName = ActiveSheet.Name Sheets(SName).Name = "abc" (※)"abc"のところを実際のセル値の式と入れ替えて下さい。 いかがでしょうか?