[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ワークエリアへの表示』(ポン太)
各シート名をワークエリア(例 A1セルへの表示)に表示する事って出来るんでしょうか?
ワークエリアでプルダウンにてシート名を選択したら、選択したシートが表示されるようにしたいんですが・・・。
非常に難しいかと思いますが、いい方法がありますでしょうか?
各団体から送られてきた登録名簿を各シートとして追加して行き、シート1に集計表を作成したいんです。
で、団体名(シート名)を選択したら登録内容がわかるという風にしたいんです。
例えばです。 B2をプルダウンで選び、B2で選んだシートの内容をA3:E4に表示する方法です。
シート1 [A] [B] [C] [D] [E] [1] シート名 Sheet2 [2] [3] あ い う え お [4] か き く け こ
Sheet2 [A] [B] [C] [D] [E] [1] あ い う え お [2] か き く け こ
作業列を用います。
シート1に下記を入力 D1=MID(CELL("filename",INDIRECT("Sheet2!A1")),FIND("]",CELL("filename",INDIRECT("Sheet2!A1")),1)+1,LEN(CELL("filename",INDIRECT("Sheet2!A1")))-FIND("]",CELL("filename",INDIRECT("Sheet2!A1")),1)) シート数に合わせてフィルダウン 次に、Sheet2等を実際のシート名に変更
B2はデータ>>入力規則より、リストを選び作成したD列の範囲を選択 これで、プルダウンでシート名が選択可能
A3=INDIRECT($B$1&"!"&CHAR(64+COLUMN())&ROW()-2) 必要範囲をコピペ
こんな感じでどうでしょうか? indirect関数を多用しているので重くなるかもしれませんが…
(1or8) はずしていたらごめんなさい
VBAで行う方法です。
新規ブックにて(Sheet1〜Sheet5ぐらいシートを作って置いてください)、
標準モジュール(module1)に
'=============================================================================== Option Explicit Sub 準備() Dim sht As Object Dim g0 As Long With Worksheets("sheet1") .Rows("1:1").RowHeight = 21 .Columns("a:a").ColumnWidth = 21 With .OLEObjects.Add(ClassType:="Forms.combobox.1", Link:=False _ , DisplayAsIcon:=False, Left:=[a1].Left, Top:=[a1].Top, Width:=[a1].Width + 3, Height:= _ [a1].Height + 1.5) .Object.Style = 2 End With End With End Sub
上記、準備を実行してみてください。Sheet1のセルA1上にコンボボックスが作成されます。この コンボボックスでシート名を選択することで該当するシートにジャンプすることを考えます。
別の標準モジュール(Module2)に作成したコンボボックスにシート名を設定するプロシジャー
'================================================================================ Sub set_combo() Dim g0 As Long Dim sht As Object With Worksheets("sheet1").OLEObjects("combobox1") Worksheets("sheet1").ev_stop = True .Object.Clear If ThisWorkbook.Sheets.Count > 1 Then ReDim shtnm(1 To ThisWorkbook.Sheets.Count - 1) For Each sht In ThisWorkbook.Sheets If sht.Name <> Worksheets("sheet1").Name Then shtnm(g0 + 1) = sht.Name g0 = g0 + 1 End If Next .Object.List = shtnm() .Object.ListIndex = -1 End If Worksheets("sheet1").ev_stop = False End With End Sub
Sheet1のモジュールにコンボボックスでシート名を選択したときに発生するイベント
'========================================================================== Option Explicit Public ev_stop As Boolean Private Sub ComboBox1_Change() Dim shtnm As Variant Dim awn As Window If Not ev_stop Then shtnm = OLEObjects("combobox1").Object.Text On Error Resume Next ThisWorkbook.Windows(2).Close On Error GoTo 0 Set awn = ActiveWindow With ActiveWindow.NewWindow.Parent .Sheets(shtnm).Select End With awn.Activate Windows.Arrange ArrangeStyle:=xlVertical End If End Sub
最後にThisworkbookのモジュールに ブックを開いた時や シートを追加した時や削除した時にコンボボックスを再構成するイベント
'================================================================== Option Explicit Private sht As Object Private Sub Workbook_Open() set_combo Worksheets("sheet1").Select End Sub '================================================================== Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim delsht As Variant On Error Resume Next delsht = sht.Name If Err.Number <> 0 Then set_combo End If Set sht = Nothing End Sub '================================================================== Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Set sht = Sh End Sub '================================================================== Private Sub Workbook_NewSheet(ByVal Sh As Object) set_combo End Sub
一度保存して閉じた後、再度開いて確認してください。
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.