• ベストアンサー

エクセルのシート名をリスト化したい

エクセルで一つのファイルを作成しました。 ファイル内には複数のシートが存在しています。 最後のページに印刷用のシートを作成させ、各シートからデータを抽出させて印刷できるようにしました。 方法としてはA1にシート名を入力して、各セルに=INDIRECT($A$1&"!L8")のようなリンクを張りました。 今度はA1に打ち込むシート名をリストで選べないかと思いましたが、方法はありますか? シートの数は30ほどあり、シート名は変更がでます。そのたびにリストを変更するのは手間なので、何かいい方法はありますか?よろしくお願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

1)各シートに、下記数式を入れる(シート名が表示されます) =MID(CELL("FILENAME",A1),FIND("]",CELL("FILENAME",A1))+1,99) 2)印刷用シートで、各シートの上記セルを参照表示 3)印刷用シートのA1に、「リスト」から選択入力するように入力規則を設定 入力規則 【リスト】同一シート http://www.eurus.dti.ne.jp/~yoneyama/Excel/n-kis.htm#risuto

517hama
質問者

お礼

うまく出来ました。ありがとうございました。 お礼が遅くなりすいません・・・

その他の回答 (2)

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

こんばんは。 最後のシートのA1に入力規則ができます。 以下は、Alt + F11 で、VBEditor を開き、プロジェクト・エキスプローラ(窓)の中から、ThisWorkbook をダブルクリックして開き、以下を貼り付けます。シートの名前を変更して、最後のページを開けば、入力規則のリストの中のシート名が変更されています。 '----------------------------------------------------- 'ThisWorkbook モジュール Private Sub Workbook_SheetActivate(ByVal Sh As Object)   Dim i As Integer   Dim n As String   Dim j As Integer   Dim ar As Variant   Dim Vl As Validation   Dim flg As Boolean   With ThisWorkbook     If Sh.Index <> .Worksheets.Count Then Exit Sub     j = .Worksheets.Count     Set Vl = .Worksheets(j).Range("A1").Validation     ar = Split(Vl.Formula1, ",")     For i = 1 To j - 1       n = n & "," & .Worksheets(i).Name       If ar(i - 1) <> .Worksheets(i).Name Then         flg = True       End If     Next     Set Vl = Nothing     If flg = False Then Exit Sub '変更がない場合     With .Worksheets(j).Range("A1").Validation       .Delete       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _       xlBetween, Formula1:=Mid$(n, 2)     End With   End With End Sub

517hama
質問者

お礼

うまく出来ました。ありがとうございました。 お礼が遅くなりすいません・・・

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Cells(行番号, 列番号) Cells(i, 1) Cells(i, "A") http://oshiete1.goo.ne.jp/qa2726187.html

517hama
質問者

お礼

うまく出来ました。ありがとうございました。 お礼が遅くなりすいません・・・

関連するQ&A

専門家に質問してみよう