実現したいこと
同じparametersの記述が複数回あるので、1つにまとめて読みやすくしたい
前提
クリック時イベントで、いくつかのパラメータクエリをExcelにエクスポートし、表に整形するフォームを作成しています。
発生している問題・エラーメッセージ
エクスポートする5つのクエリのうち4つがパラメータクエリで、4つとも抽出条件が同じです。set qdfする度に同じ.parametersを記述しているので可読性・メンテナンス性に欠けると感じました。
該当のソースコード
Private Sub 出力_Click() Dim dbs As Database Dim qdf As QueryDef Dim rst As Recordset Dim xls As Object Const xlUp = -4162 Const xlToLeft = -4159 Const xlCellTypeBlanks = 4 Set dbs = CurrentDb Set xls = CreateObject("Excel.Application") With xls .ScreenUpdating = False .Workbooks.Open "フルパス¥実績.xlsx" Set rst = dbs.OpenRecordset("Q選択クエリ") 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ1") With qdf .parameters("[Forms]![F6_1出力]![集計開始年月]") = [Forms]![F6_1出力]![集計開始年月] .parameters("[Forms]![F6_1出力]![集計終了年月]") = [Forms]![F6_1出力]![集計終了年月] Set rst = .OpenRecordset End With 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ2") With qdf .parameters("[Forms]![F6_1出力]![集計開始年月]") = [Forms]![F6_1出力]![集計開始年月] .parameters("[Forms]![F6_1出力]![集計終了年月]") = [Forms]![F6_1出力]![集計終了年月] Set rst = .OpenRecordset End With 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ3") With qdf .parameters("[Forms]![F6_1出力]![集計開始年月]") = [Forms]![F6_1出力]![集計開始年月] .parameters("[Forms]![F6_1出力]![集計終了年月]") = [Forms]![F6_1出力]![集計終了年月] Set rst = .OpenRecordset End With 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ4") With qdf .parameters("[Forms]![F6_1出力]![集計開始年月]") = [Forms]![F6_1出力]![集計開始年月] .parameters("[Forms]![F6_1出力]![集計終了年月]") = [Forms]![F6_1出力]![集計終了年月] Set rst = .OpenRecordset End With 中略 .ScreenUpdating = True .Visible = True End With Set xls = Nothing End Sub
試したこと
Function parameters() With qdf .parameters("[Forms]![F6_1出力]![集計開始年月]") = [Forms]![F6_1出力]![集計開始年月] .parameters("[Forms]![F6_1出力]![集計終了年月]") = [Forms]![F6_1出力]![集計終了年月] Set rst = .OpenRecordset End With Private Sub 出力_Click() 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ1") Call parameters 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ2") Call parameters 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ3") Call parameters 中略 Set qdf = dbs.QueryDefs("Qパラメータクエリ4") Call parameters 中略 End Sub
コード内で記述が重複している部分をFunctionで括れないかと思いこのように記述してみましたが、「変数が定義されていません」と構文エラーが発生しました。
そもそもFunctionで括るという考え自体が間違っているのか、記述を圧縮する方法はあるのか等ご意見を頂きたいです、よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
MicrosoftAccess2019
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2023/05/22 07:31