プロが教える店舗&オフィスのセキュリティ対策術

エクセルで一つのファイルを作成しました。
ファイル内には複数のシートが存在しています。
最後のページに印刷用のシートを作成させ、各シートからデータを抽出させて印刷できるようにしました。
方法としてはA1にシート名を入力して、各セルに=INDIRECT($A$1&"!L8")のようなリンクを張りました。

今度はA1に打ち込むシート名をリストで選べないかと思いましたが、方法はありますか?
シートの数は30ほどあり、シート名は変更がでます。そのたびにリストを変更するのは手間なので、何かいい方法はありますか?よろしくお願いします。

教えて!goo グレード

A 回答 (3件)

1)各シートに、下記数式を入れる(シート名が表示されます)


=MID(CELL("FILENAME",A1),FIND("]",CELL("FILENAME",A1))+1,99)
2)印刷用シートで、各シートの上記セルを参照表示
3)印刷用シートのA1に、「リスト」から選択入力するように入力規則を設定

入力規則 【リスト】同一シート
http://www.eurus.dti.ne.jp/~yoneyama/Excel/n-kis …
    • good
    • 2
この回答へのお礼

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

お礼日時:2009/01/26 11:35

こんばんは。



最後のシートの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
    • good
    • 2
この回答へのお礼

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

お礼日時:2009/01/26 11:35

Cells(行番号, 列番号)


Cells(i, 1)
Cells(i, "A")

http://oshiete1.goo.ne.jp/qa2726187.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/01/26 11:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング