【設定方法】 ① ワークシート名を設定します。ここでは、「Sheet1」を設定します。
② スライサーの位置を設定します。ここでは、セル「G2~H10」の場所にスライサーを設置します。
③ テーブル名を設定します。ここでは、「テーブル1」でテーブル名を登録されているのでそのまま設定します。
④ スライサーの対象位置(列)を設定します。ここでは、「性別」を設定します。
【サンプルプログラム】
'
'
Sub Set_Slicer01() 'テーブルよりスライサーを作成します。
Dim Ws As Worksheet
Dim SlicerSete As Range
Set Ws = Worksheets("Sheet1") 'テーブルの設置しているワークシートを設定します。
Set SlicerSete = Ws.Range("G2:H10") 'スライサーを設置する位置を指定します。
With ThisWorkbook.SlicerCaches.Add(Ws.ListObjects("テーブル1"), "性別") _
.Slicers.Add(Ws, Top:=SlicerSete.Top, Left:=SlicerSete.Left, Width:=SlicerSete.Width, Height:=SlicerSete.Height)
'スライサーを設置します。(テーブル1の性別)
End With
End Sub
'
【プログラムの流れ】 ① テーブルが登録されているワークシート名を「社員台帳」に指定します。
② スライサーの表示位置を指定します。所属(セル:G2~H10)
③ 1つ目のスライサー(所属)を設置します。
④ スライサーの表示位置を指定します。役職(セル:I2~J10)
⑤ 2つ目のスライサー(役職)を設置します。
【プログラム実行条件】 ① テーブル名「社員一覧」でテーブルを作成しておく。
② テーブルデータ内に、「所属」・「役職」を作成します。
③ テーブル名「社員台帳」を作成したシート名を「社員台帳」に設定します。
'
'
Sub Set_Slicer02() 'テーブルよりスライサーを作成します。(スライサーを2つ作成)
Dim Ws As Worksheet
Dim SlicerSet As Range
Set Ws = Worksheets("社員台帳") 'テーブルが登録されているシート「社員台帳」を指定します。
Set SlicerSet = Ws.Range("G2:H10") 'スライサーの位置を指定します。
With ThisWorkbook.SlicerCaches.Add(Ws.ListObjects("社員一覧"), "所属") _
.Slicers.Add(Ws, Top:=SlicerSet.Top, Left:=SlicerSet.Left, Width:=SlicerSet.Width, Height:=SlicerSet.Height)
'スライサーを設置します。(テーブル:社員一覧の所属)
End With
Set SlicerSet = Ws.Range("I2:J10") 'スライサーの位置を指定します。
With ThisWorkbook.SlicerCaches.Add(Ws.ListObjects("社員一覧"), "役職") _
.Slicers.Add(Ws, Top:=SlicerSet.Top, Left:=SlicerSet.Left, Width:=SlicerSet.Width, Height:=SlicerSet.Height)
'スライサーを設置します。(テーブル:社員一覧の役職)
End With
End Sub
'
【プログラムの流れ】
① データが登録されているワークシート名「商品一覧」に指定します。
② エラーが発生した場合は、「Err_syori」へ飛びます。
③ セル「A1」を起点にテーブルを作成します。テーブルが未作成の場合はそのままテーブルを作成します。既にテーブルが作成されている場合は、エラーが発生して、「Err_syori」へ飛びます。
④ 既にワークシート上にスライサーが作成している場合は、全て削除します。
⑤ スライサーを設置します。(支店名)
⑥ スライサーを設置します。(カテゴリー)
⑦ スライサーを設置します。(商品)
【プログラム実行条件】 ① セル「A1」を起点にデータを作成する。
② 見出し名に「支店名・カテゴリー・商品」を指定作成します。
③ ワークシート名を「商品一覧」にします。
'
'
Sub Set_Slicer03() 'テーブル作成からスライサーも作成
Dim Ws As Worksheet
Dim I As Long
Dim SlicerSet As Range
Set Ws = Worksheets("商品一覧") 'データが登録されているワークシート「商品一覧」を指定します。
On Error GoTo Err_Shori 'エラーが発生した場合は、「Err_Shori」へ飛びます。
With Ws
.ListObjects.Add Source:=Ws.Range("A1").CurrentRegion, xllistobjecthasheaders:=xlYes, tablestylename:="TableStylelight2"
'セル「A1」を起点にテーブルを作成します。既にテーブルが作成している場合は、エラーが発生して、「Err_syori」へ進む
Err_Shori:
For I = .Shapes.Count To 1 Step -1
If .Shapes(I).Type = msoSlicer Then .Shapes(I).Delete '既にスライサーが作成して有る場合は、削除します。
Next I
End With
Set SlicerSet = Ws.Range("F2:G10") 'スライサー位置を指定します。(支店名:位置)
With ThisWorkbook.SlicerCaches.Add(Ws.ListObjects(Ws.ListObjects(1).Name), "支店名") _
.Slicers.Add(Ws, Top:=SlicerSet.Top, Left:=SlicerSet.Left, Width:=SlicerSet.Width, Height:=SlicerSet.Height)
'スライサーを設置します。(テーブル:支店名)
End With
Set SlicerSet = Ws.Range("H2:I10") 'スライサー位置を指定します。(カテゴリー:位置)
With ThisWorkbook.SlicerCaches.Add(Ws.ListObjects(Ws.ListObjects(1).Name), "カテゴリー") _
.Slicers.Add(Ws, Top:=SlicerSet.Top, Left:=SlicerSet.Left, Width:=SlicerSet.Width, Height:=SlicerSet.Height)
'スライサーを設置します。(テーブル:カテゴリー)
End With
Set SlicerSet = Ws.Range("J2:K10") 'スライサー位置を指定します。(商品:位置)
With ThisWorkbook.SlicerCaches.Add(Ws.ListObjects(Ws.ListObjects(1).Name), "商品") _
.Slicers.Add(Ws, Top:=SlicerSet.Top, Left:=SlicerSet.Left, Width:=SlicerSet.Width, Height:=SlicerSet.Height)
'スライサーを設置します。(テーブル:商品)
End With
End Sub
'