• ベストアンサー

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 ’-------------------------------------- ぞうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.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

hiroshi77777
質問者

お礼

回答ありがとうございました。

その他の回答 (1)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

モジュール化すれば下記のようになります。 --- 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

hiroshi77777
質問者

お礼

回答ありがとうございました。

関連するQ&A

専門家に質問してみよう