Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


381 / 2272 ツリー ←次へ | 前へ→

【11963】最大値の取得で・・・ あおぎん 11/3/2(水) 12:59 質問[未読]
【11964】Re:最大値の取得で・・・ よろずや 11/3/2(水) 21:18 回答[未読]
【11965】Re:最大値の取得で・・・ あおぎん 11/3/4(金) 12:22 お礼[未読]

【11963】最大値の取得で・・・
質問  あおぎん  - 11/3/2(水) 12:59 -

引用なし
パスワード
   いつもお世話になってます。
またまたよろしくお願いします。

同一テーブルにあるフィールドA,B,C(すべて数値型)の最大値を取得したいと思い、検索して、次のような自作関数をモジュールに記入しクエリで使用して目的の値を取得しています。
(フィールドは現在3つなのでIF文でもいいのですが、もっと多くなることが予測されるので関数にしたいと思っています。)

Function Maxnb(ParamArray Mynb()) As Long
Dim i As Long
  For i = 0 To UBound(Mynb) - 1
  Debug.Print i
    If Maxnb = 0 Then
      Maxnb = Mynb(i)
    Else
      If Maxnb < Mynb(i) Then
        Maxnb = Mynb(i)
      End If
    End If
  Next
End Function

クエリ記述:Maxnb([A],[B],[C])

ところが、現状Cの値を無視し、A,Bの最大値のみを取得してきます。関数の記述に不備がありますでしょうか??
Ubound関数は配列のサイズを取得してくるとのことですが、デバッグの結果、iは0と1の繰り返しですので、3つめのフィールドCを認識してないのでは?と思っています。が、解決法の見当がつきません。

お分かりになる方、どうか回答をよろしくお願いいたします。

(Win Accessともに2000)

【11964】Re:最大値の取得で・・・
回答  よろずや  - 11/3/2(水) 21:18 -

引用なし
パスワード
   >Ubound関数は配列のサイズを取得してくるとのことですが

大きな勘違いです。
サイズではなく、最大の添え字を取得しています。
1引いちゃダメ。

【11965】Re:最大値の取得で・・・
お礼  あおぎん  - 11/3/4(金) 12:22 -

引用なし
パスワード
   ▼よろずや さん:

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

>>Ubound関数は配列のサイズを取得してくるとのことですが
>
>大きな勘違いです。
>サイズではなく、最大の添え字を取得しています。
>1引いちゃダメ。

そうなんですね。
Ubound関数って使ったことなかったので、あまり意味がわかってなく、検索した関数をほぼそのまま使用しちゃたんです。

1引くのをやめたら、希望の値が取得できました。
ありがとうございました。

381 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078193
(SS)C-BOARD v3.8 is Free