OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

シート名をコンボボックスで入力

  • 暇なときにでも
  • 質問No.195258
  • 閲覧数195
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 70% (26/37)

こんにちは。

早速ですが質問です。
エクセル97を使用しています。
シート名を変更するときにコンボボックスなどを表示し、そこから選択して
シート名を入力できるようにしたいのですが可能でしょうか?
リストから選んで入力できるかたちなら、なんでも構いません。

リストはシート名を変えるシートとは別の他のシートにあります。

つたない説明ですがよろしくお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

多分、マクロでないと無理でしょう。書いてみました。

(0)変更するシート名が入力されたセル範囲に範囲名『SheetNames』を付けます。
   この範囲は矩形と想定しています。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、
(1)挿入→ユーザーフォーム でユーザーフォームを挿入します。
(2)そのユーザーフォームにListBoxを2つ、CommandButtonを1つ作ります。
(3)UserForm1のコードウインドウに貼り付け。
    (コードウインドウはフォームをダブルクリックで出てくる)
    ↓
Private Sub CommandButton1_Click()
  Dim OldName As String  '選択した今のシート名
  Dim NewName As String  '選択した新しいシート名

  On Error GoTo ErrorHandler  '同一シート名を指定した場合の対応

  'シート名をセット
  OldName = ListBox1.List(ListBox1.ListIndex)
  NewName = ListBox2.List(ListBox2.ListIndex)
  'シート名を変更する
  Worksheets(OldName).Name = NewName
  '選択したシート名を削除する
  'ListBox1.RemoveItem ListBox1.ListIndex
  'ListBox2.RemoveItem ListBox2.ListIndex

  Exit Sub
ErrorHandler:
  '既にあるシート名を指定した場合
  If Err = 1004 Then MsgBox Error(Err)
End Sub

Private Sub UserForm_Initialize()
  Dim ws As Worksheet  'ワークシート
  Dim rg As Range    'セル
  'ListBox1に現在のワークシート名を取り込む(アクティブシート以外)
  For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> ActiveSheet.Name Then
      ListBox1.AddItem ws.Name
    End If
  Next
  ListBox1.ListIndex = 0  '最初のシート名を選択状態にしておく
  'ListBox2に変更するワークシート名を取り込む
  For Each rg In Range("SheetNames")
    ListBox2.AddItem rg.Text
  Next
  ListBox2.ListIndex = 0  '最初のシート名を選択状態にしておく
End Sub

(4)変更するシート名が登録されたシートのコードウインドウに貼り付け
    (表示→プロジェクトエクスプローラでプロジェクトエクスプローラを出しておけば特定は容易です)
    ↓
Sub SheetNameChange()
  UserForm1.Show
End Sub

(5)シートに戻り、変更するシート名が登録されたシートからツール→マクロ→マクロで『SheetNameChange』を実行します。
(6)ユーザーフォームで、もとのシート名(ListBox1)と変更するシート名(ListBox2)を選択してボタンを押せば変更されます

『選択したシート名を削除する』の次の2行のコメント『'』を削除すれば、既に使ったシート名は削除されます。

Excel97で動作確認しました。ご参考に。
お礼コメント
yarou

お礼率 70% (26/37)

こんにちは。
早速のご回答頂いたのに返信遅くなりまして、申し訳ありません。
大変助かりました。
短時間で作ってしまうなんて、すごいですね!
マクロはあまり詳しくないのですが、これから勉強しようと思います。
またよろしくお願いします。
ありがとうございました。
投稿日時 - 2002-01-10 17:42:12
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ