• ベストアンサー

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

nishi6の回答

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

多分、マクロでないと無理でしょう。書いてみました。 (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
質問者

お礼

こんにちは。 早速のご回答頂いたのに返信遅くなりまして、申し訳ありません。 大変助かりました。 短時間で作ってしまうなんて、すごいですね! マクロはあまり詳しくないのですが、これから勉強しようと思います。 またよろしくお願いします。 ありがとうございました。

関連するQ&A

  • チェックボックス・コンボボックス

     エクセルのチェックボックス・コンボボックスについて教えて下さい。  チェックボックス・コンボボックスを作成しリストから選択すると、リンクするセルには番号が表示されてしまいます。以前は正確にリスト名が表示されていました。  どこか設定のようなものを変えてしまったのでしょうか?初心者なものでよく分かりません。どうかよろしくお願いします。

  • エクセルのコンボボックスについて

    シート「データ」に   A  B 1 い  東京 2 ろ  千葉 3 は  埼玉 上記内容が記載されています。 それを別のシートで参照できるようにリストを作って入力規則でコンボボックスを作りました。 しかし、コンボボックスには選択肢がひとつしか表示されません。 「い、ろ、は」だけが表示されています。 でも本当は「東京、千葉、埼玉」をコンボボックスで表示し、セルには「い、ろ、は」のどれかを表示するようにしたいのです。 これをマクロを使わないでできるでしょうか?

  • Excel2000で、目次となるシートのコンボボックスのリストから別のシートへジャンプしたいのですが・・・

    現在Excelをまとめているのですが、シートが50ほどになりとても検索しにくくなっています。 そこで、シートの巻頭にシートを追加し、コンボボックスを設けて、コンボボックスのリストから選択したシートへジャンプさせたいと考えました。 VBAを使うようなのですが、参考になる質問が見つからなかったので、是非ご存知の方教えて頂けないでしょうか? ※ちなみに小生、VBAに非常に疎い為コンボボックスへのリストの入力方法まで教えて頂けるとありがたいのですが・・・・ 困っています! 宜しくお願い致します。

  • エクセル2010 シート上のコンボボックス

    エクセル2010を使用しております。 シート1にコンボボックス1(アクティブXコントロール)を設置しており、 コードは下記です。 Private Sub ComboBox1_DropButtonClick() Dim i As Long With Worksheets("シート操作").OLEObjects("ComboBox1").Object .Clear    For i = 1 To 100 .AddItem i Next i End With End Sub コンボボックス1のドロップボタンで リスト1~100の数字の中から、任意の数字を選び テキスト表示部分に表示させたいだけなのですが、 上記コードではリストから選択しても何も表示されません。 コードの誤りと詳しい説明を希望します。 よろしくお願いいたします。

  • VBA コンボボックスにシート名を表示

    ExcelVBA初心者です。 ユーザーフォームの中にコンボボックスを作成し、現在使用しているbookのワークシート名をすべてリスト表示させたいのですが、どうしたら良いでしょうか? ワークシート名はSheet1、Sheet2、Sheet3です。 よろしくお願いします。

  • コンボボックスで選択した値をシートに転記する

    エクセルを使用して表を作成していますが、うまくいきません。 作りたいのは下記のものです。 sheet1にリストを作成  (リストはA-F列で300行程、また先頭A列は任意の不連続番号) sheet2に表を作成 sheet2のA1にコンボボックスを作成 コンボボックスにはsheet1のリストのA,B列を表示させたい またコンボボックスで選択した行のデータをsheet2にコピーさせる。 と、なるようにしたいのですが、どのようにしたら良いのでしょうか? コンボボックスのリンクから参照したVLOOKUPだとセルのデータを上書きされると、式がなくなってしまうので、VBAで作成したいです。

  • シート上のコンボボックスの使い方

    シート上のコンボボックスの使い方 現在作っている物があるのですが、色々と調べてはみるものの解決出来なくて困っています。 ☆やりたいこと シート1 コンボボックスA コンボボックスB コンボボックスC 一覧表(A1~A16)の枠だけが書かれているもの コンボボックスA・・・青森 秋田 岩手 コンボボックスB・・・100 200 300 コンボボックスC・・・北 東 西 南 シート2 コンボボックスAとBとCの選択されたものによって選ばれる一覧表(例A1~E16)のデータ ☆シート1にてコンボボックスを3種類選択した時に、シート1枠だけの一覧表にシート2のデータが表示される! ということがやりたいです。 説明がアバウトすぎて申し訳ありませんが、初心者なりに色々やった結果が惨敗に終わっている状態です。 皆様のお力を貸していただきたく思います。

  • コンボボックスに付いて

    エクセル2000を使用しています。コンボボックスに付いて教えて下さい。 今コンボボックス(ユーザーフォーム使用)を12個一組 計5組 にて簡単な選択データを作っています。 コンボボックスの値はシートより読み出し値を表示させているのですが、この12個のコンボボックス1~12みたいな感じで 簡単に一まとめ出来ないでしょうか? 12個一組は内容は同じです。とりあえず一つ一つのコンボボックスに対してシートを参照するようにしましたが、 もっと簡単に簡略化出来ないものなのでしょうか? ご教示お願い致します。初心者ですので例などで教えて頂ければ幸いです。

  • ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい

    フォームで入力画面をつくっています。 あるコンボボックスのリストから項目が選択されたら、一覧からリンクさせてテキストボックスの内容を更新がしたいのです。 例えば「社員コード」のコンボボックスで「3」が選択されたら、「社員名」のテキストボックスに別シートに作成してある社員一覧から「太郎」が表示されるというようにです。 セルA1とコンボボックスをリンクさせ、セルB1にVLOOKUP(A1,一覧,2)で一覧から名前を抽出しました。コンボボックスのChangeイベントでB1の内容をテキストボックスへ送っているのですが、カーソルを別の項目へ移動するまではテキストボックスの内容が更新されません。 コンボボックスのリストを選択した時点でテキストボックスを更新する方法はないでしょうか?

  • Excel VBA ユーザーフォームのコンボボックスに表示する値の入力方法

    Excel Xを使用して、VBAのユーザフォームにコンボボックスを作りましたが、どうしてもコンボボックス内に表示する値の入力方法が分かりません。 WEBや本などで「これ」と思われるものを実験していますが、どれも表示することができません。 できるだけ詳しく教えていただけませんか? したいことは、  cbocenter というコンボボックスに値を出します。  値は List シートの A2 から A18 に入力済みです。  それと値から選択した値を data シートの J列 に  表示させたいのです。(行の指定はできています) 本当に困ってます。よろしくお願いします。