• ベストアンサー

EXCELの。。。

EXCEL97を使用しているのですが セルの値をSHEET名に反映させたいのですが どのようにしたらよいでしょう? 申し訳ありませんがよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

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)
回答No.3

基本は Sub test01() ActiveSheet.Name = Range("a1") とか Worksheets("sheet1").Name=Cells(1,1) End Sub でしょう。 (1)どういうキッカケでセットするのか。コマンドボタンでも貼りつけクリックするのか。 (2)シート名にセットする値のあるセルは1シートにあるのか。複数に跨っているのか。 (3)名前をセットしたいシートは複数か。 そういったことが、回答するには必要かと思います。

  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.1

シート名の直接命令を入力できないので、 マクロを作るなどすればできます。 ソースコードの雰囲気としては・・。 SName = ActiveSheet.Name Sheets(SName).Name = "abc" (※)"abc"のところを実際のセル値の式と入れ替えて下さい。 いかがでしょうか?