• ベストアンサー

エクセルでこんなことできますか?

シートが数10個あります。各々のシートに名前がついています。 シート2は佐藤 シート3は鈴木 シート4は西川 シート5は山本 と言うようにシート2からは、シート名の方の情報が入っています。 シート1で、西川と名前を選択すると、シート1からシート4へ画面が飛ぶ(シートが移動する)みたいなことってできますか? シート名で、上記のようなことができなければ、各シートのA1のセルに名前を入力しているので、各シートのA1 を検索して、その名前の入ったシートにシート1から画面が飛ぶみたいなことでもできればなと。 実はシートがもっとたくさんあり、いちいちシートを探すのが大変なので、リストを作り、入力規則から、ボタンでできた名前を選択すれば、その人のシートに飛べばなぁと考えたのです。 よろしく願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

ハイパーリンクの方法は、マクロを書ける人でも、便利なので使っているようです。 これは、脱初心者用のテクニックです。 入力規則ではなくて、 『コントロールツール』のコンボボックスを使います。 以下の名前をシートのどこかに置いてください。(任意です) 佐藤 <-シートを選択するためのデータ 鈴木 データは、10個つまり、シートは11個?あることになりますね。 西川 山本 ・ ・ ・ ※ シート上にこういうのがあると邪魔でしたら、コンボボックスに取り込んでもよいです。ただ、別のコードが必要です。 (最後に書きました) 青い三角定規が出ていて、凹んでいる状態か確認してください。 右クリックすると、 「プロパティ」というのがありますから、それをクリックすると、英語だらけの四角い窓が出てきます。 その中から、「ListFillRange」というのを探して、 その隣に、先ほど書いたリストの範囲を、例えば「A1:A11」と入力してください。 それで、「×」で、窓を閉じたら、 同じく、コンボボックスで、右クリック、コードの表示で、 Private Sub ComboBox1_Change()     ~(空っぽ) End Sub というものが出てきてしまうはずです。 これを消して、以下のものを貼り付けてください。 これは、シートのインデックス取っているものですから、もし不都合があれば、シートの順番を変えるか、WorkSheets("Sheets"& .ListIndex +2).Range("A1")とすれば、問題がなくなります。なお、シート以上の数を選択すると、エラーが起こりますので、間違わないでくださいね。 「2」の意味は、初期値、つまり、コンボボックスの項目の一番上が「0」だから、「シート2」を選ぶために、2を足します。 Private Sub ComboBox1_Click() With ComboBox1  Application.Goto Sheets(.ListIndex + 2).Range("A1")  .ListIndex = -1 End With End Sub それで、右上の「×」をクリックすると、画面が戻ります。 青い三角定規が凹んだ状態でしたら、クリックすると、コンボボックスが使えるようになります。ちょっと試してみてください。 ※補足 コンボボックスにデータを入れる。 '<ThisWorkbookに書き込む> Private Sub Workbook_Open() Dim nm As Variant With Sheet1    .ComboBox1.ListFillRange = ""  For Each nm In Array("佐藤", "鈴木", "西川", "山本") 'この()の中に、「,"名前"」で繋げる    .ComboBox1.AddItem nm  Next nm End With End Sub

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

シート名を指定するシートを1つ決めます。 仮にB2セルにシート名を入れるとします。 そのシートのChangイベントプロシージァーに 下記を作ります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then Worksheets(Target.Value).Select End If End Sub B2にシート名を打ち込むと即座にソノシートがアクチブになります。 いつもA1セルを指すようにすることも簡単です Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then Worksheets(Target.Value).Activate ActiveSheet.Range("A1").Select End If End Sub

すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

ハイパーリンクを活用した「目次シート」を作成する方法がよく使われているみたいです。 が、、任意のシートの任意のセルにジャンプするのではなくて、「シートの切り替え」だけが目的でしたら、次の方法でも手間は変わらないと思います。 ・シート切り替えタブ左側の矢印の部分で右クリック 意外と知られてないようですが、EXCELの標準機能です。「シートの一覧」がポップアップ表示され、そこからシートの切り替えができます。

すると、全ての回答が全文表示されます。
  • a987654
  • ベストアンサー率26% (112/415)
回答No.2

no1の方の方法がうまく行かない場合 VBA+起動釦ではどうでしょうか? 1.マクロ記録機能をシートをセレクトしてセルを指定する。 2.マクロ記録を終了させる 1.2を必要なシート分行う フォームから釦を選び名前をつけ先ほど作製したマクロに関連つけを行う。 (フォームが出てないときは 表示→ツールバー→フォーム) あとは釦をクリックすれば指定したシートに飛びます。

すると、全ての回答が全文表示されます。
  • mysticage
  • ベストアンサー率32% (52/158)
回答No.1

ハイパーリンクを使っては? 例えば、 sheet1 の A1セルに 佐藤 と入れてみて下さい 右クリックして、ハイパーリンクを選んでください。  ↓ このドキュメント内 を選んでください  ↓ 行きたい先を設定してあげましょう。 sheet2 とか、 sheet2のC13セルとか。 ※一部、自身のPCの設定によっては、×な場合が あるようですが、試してみてください

すると、全ての回答が全文表示されます。

関連するQ&A