こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2006-06-22 08:29:56

QNo.2230761

すぐに回答ほしいです

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

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

投稿日時 - 2006-06-22 10:17:23

お礼

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

投稿日時 - 2006-06-24 06:32:59

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.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

投稿日時 - 2006-06-22 09:20:34

お礼

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

投稿日時 - 2006-06-24 06:33:30

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-