- ベストアンサー
AccessVBAでユーザー定義関数使用
エクセルVBAで、以下のユーザー定義関数(選択したセルaを全て3乗した和を求める)を使用していますが、アクセスVBAで同様の関数を使用するにはどうしたらよいでしょうか? ★アクセスVBVで実行したいプログラム 実行すると"データテーブル"の"Aフィールド"を全て3乗した和をmsgboxで表示 ★エクセルで使用していたユーザー定義関数 ’-------------------------------------- Function y(a As Range) As Variant Dim r As Range Dim result As Variant For Each r In a result = result + r.Value ^ 3 Next y = result End Function ’-------------------------------------- ぞうぞよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
VBA となると、書き方は人それぞれです。 私は、DBCount関数を利用しています。 -------------------------------------------------------------------- MsgBox DBCount("SELECT Sum([A]^3) AS こたえ FROM データテーブル;") ? DBCount("SELECT SUM(ID) FROM インポート記録") 243856 ? DBCount("SELECT SUM(ID^3) FROM インポート記録") 14161272936256 -------------------------------------------------------------------- Public Function DBCount(ByVal strQuerySQL As String) As Variant On Error GoTo Err_DBCount Dim N Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then .MoveFirst ' <-- 省略可! N = Nz(.Fields(0), 0) End If End With Exit_DBCount: On Error Resume Next rst.Close Set rst = Nothing DBCount = N Exit Function Err_DBCount: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBCount)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBCount End Function
その他の回答 (1)
- o_chi_chi
- ベストアンサー率45% (131/287)
モジュール化すれば下記のようになります。 --- Sub y() Dim rs As New ADODB.Recordset Dim SQL As String SQL = "SELECT Sum([A]^3) AS こたえ FROM データテーブル;" rs.Open SQL, CurrentProject.Connection, _ adOpenKeyset, adLockOptimistic MsgBox rs.Fields("こたえ") rs.Close End Sub
お礼
回答ありがとうございました。
お礼
回答ありがとうございました。