Skip to content

Instantly share code, notes, and snippets.

@NonAbility
Last active March 23, 2024 09:10
Show Gist options
  • Save NonAbility/f02b78a77ac54178b4843a4f9ecc5dbc to your computer and use it in GitHub Desktop.
Save NonAbility/f02b78a77ac54178b4843a4f9ecc5dbc to your computer and use it in GitHub Desktop.
「エリア需給実績グラフ」のワンアクション化VBAのための、基本プロシージャ7つ
Option Explicit
Sub Pre()
'
' URLリストを更新するマクロ
'
Dim ws2 As Worksheet ' 2_DL_URL_List のワークシート変数宣言
Dim tbl2 As ListObject ' Q_DL_URL_List のリストオブジェクト変数宣言
' クエリー Q_DL_URL_List を変数にセットする
Set ws2 = ThisWorkbook.Worksheets("2_DL_URL_List")
Set tbl2 = ws2.ListObjects("Q_DL_URL_List")
' クエリー Q_DL_URL_List を更新する
tbl2.QueryTable.Refresh BackgroundQuery:=False
End Sub
Sub chgFirstD()
'
' 日スライサーを強制的に "1日" にするマクロ
'
ThisWorkbook.SlicerCaches("スライサー_日").VisibleSlicerItemsList = Array("[Q_SUM_Monthly].[日].&[1]")
End Sub
Sub chgLastYM()
'
' 年月スライサーの選択値を最新年月に指定するマクロ
'
Dim ws2 As Worksheet ' 2_DL_URL_List のワークシート変数宣言
Dim ws3 As Worksheet ' 3_PT_YM のワークシート変数宣言
Dim YM As String ' 選択中の R_YM の文字列変数宣言
Dim LastYM As String ' Q_DL_URL_List の中での最新年月の文字列変数宣言
Dim pt3 As PivotTable ' PT_YM のピボットテーブル変数宣言
Set ws2 = ThisWorkbook.Worksheets("2_DL_URL_List")
YM = Format(ws2.Range("R_YM"), "yyyy/mm")
LastYM = ws2.Range("R_LastYM").Value
Set ws3 = ThisWorkbook.Worksheets("3_PT_YM")
Set pt3 = ws3.PivotTables("PT_YM")
' 既に選択中の年月がURLリストの最新年月と異なるときにだけ、
' ピボットテーブルの年月フィルターに最新年月を指定する
If LastYM <> YM Then
pt3.PivotFields("年月").CurrentPage = LastYM
End If
End Sub
Sub Ref1()
'
' 年月スライサー変更か最新日更新ボタンを押したときに、
' 1) CSVを読み込み
' 2) 最終時間帯を更新し
' 3) 月Data一覧を更新
' するマクロ
'
Dim ws4 As Worksheet ' 4_Last_UpdateTime のワークシート変数宣言
Dim ws7 As Worksheet ' 7_Chart_Monthly のワークシート変数宣言
Dim tbl2 As ListObject ' Q_DL_URL_List のリストオブジェクト変数宣言
Dim tbl4 As ListObject ' Q_Last_UpdateTime のリストオブジェクト変数宣言
Dim tbl7 As ListObject ' Q_Chart_Data_Monthly のリストオブジェクト変数宣言
Set ws4 = ThisWorkbook.Worksheets("4_Last_UpdateTime")
Set ws7 = ThisWorkbook.Worksheets("7_Chart_Monthly")
Set tbl4 = ws4.ListObjects("Q_Last_UpdateTime")
Set tbl7 = ws7.ListObjects("Q_Chart_Data_Monthly")
ThisWorkbook.Connections("クエリ - Q_SUM_Monthly").Refresh
tbl4.QueryTable.Refresh BackgroundQuery:=False
tbl7.QueryTable.Refresh BackgroundQuery:=False
End Sub
Sub chgLastD()
'
' 日スライサーの選択値を最終更新日時の「日」に指定するマクロ
'
Dim ws4 As Worksheet ' 4_Last_UpdateTime のワークシート変数宣言
Dim LastD As String ' 最終更新時間帯の日にち文字列変数宣言
Set ws4 = ThisWorkbook.Worksheets("4_Last_UpdateTime")
LastD = Format(ws4.Range("R_Last_UpdateTime").Value, "d")
ThisWorkbook.SlicerCaches("スライサー_日").VisibleSlicerItemsList = Array("[Q_SUM_Monthly].[日].&[" & LastD & "]")
End Sub
Sub Ref2()
'
' 年月または日のスライサー変更または最新日更新ボタンを押したときに、
' 1) Chart_Daily を更新し
' 2) 日Data一覧を更新
' するマクロ
'
Dim ws8 As Worksheet ' 8_Chart_Daily のワークシート変数宣言
Dim cht8 As Chart ' Chart_Daily のチャート変数宣言
Dim tbl8 As ListObject ' Q_Chart_Data_Daily のリストオブジェクト変数宣言
Set ws8 = ThisWorkbook.Worksheets("8_Chart_Daily")
Set cht8 = ws8.ChartObjects("Chart_Daily").Chart
Set tbl8 = ws8.ListObjects("Q_Chart_Data_Daily")
cht8.Refresh
tbl8.QueryTable.Refresh BackgroundQuery:=False
End Sub
Sub Save()
'
' この book を上書き保存するマクロ
'
ThisWorkbook.Save
End Sub
Sub ScrOff()
'
' 画面遷移の抑止
'
Application.ScreenUpdating = False
End Sub
Sub ScrOn()
'
' 画面遷移抑止の解除
'
Application.ScreenUpdating = True
End Sub
Sub Uptodate()
'
' 最新日更新ボタンを押したとき実行するマクロ
'
Call ScrOff
Call Pre
Call chgLastYM
Call Ref1
Call chgLastD
Call Ref2
Call ScrOn
Call Save
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment