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

解決済みの質問

ACCESS 関数

フォームのテキストボックス「text2」のコントロールソースに
=roundup([text1]/1.05,0)
と書いて実行したら「#NAME?」エラーになりました。試しにクエリに
field2:roundup([field1]/1.05,0)
と書いて実行したら、実行時に「式に未定義関数'roundup'が」あります」とエラーになりました。

ヘルプを見ると「この関数からエラー値 #NAME? が返された場合、msowcf.dll をセットアップしなければならないことがあります。」と書かれています。

検索したら、このファイルは「C:\Program Files\Microsoft Office\Office」内にありました。
モジュールの参照設定で上記ファイルを登録したところ「Microsoft Web Components Function Library」にチェックが付きました。
改めてフォームとクエリを実行しましたが結果は同じでした。

どうすればROUNDUP関数を使えるようになるでしょうか。
ACCESS2000です。よろしくお願いします。

投稿日時 - 2004-10-15 17:58:31

QNo.1043352

暇なときに回答ください

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

>「msowcf.dll をセットアップ」すれば使えるような事が書いてあるんですが

「msowcf.dll をセットアップ」のヘルプの抜粋
「それらの関数を含むスプレッドシートを Web ブラウザで開いたときに、エラー値 "#NAME?" が表示されます。」
これは「Webページに表示する場合にのみエクセルのワークシート関数を使うことができる。」ということです。
Access上では使えないので#1の回答になりました。

投稿日時 - 2004-10-18 12:08:57

お礼

回答ありがとうございます。
Accessでは使えないって事ですね?!
ハッキリしたので、皆さんに教えていただいたように、IIfとの組み合わせでやってみます。

ってゆーか、実は、自分の用事ではなくて、別の方の質問で「税込み金額から税抜き金額を求める」というのがあって、それを自分でテストする中で、切り上げが必要だと分かったので、Roundupをしたかったのです。
でも、今回質問した事で、勉強になりました。

投稿日時 - 2004-10-18 12:29:08

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

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

回答(5)

ANo.4

無ければ作るということで作ってみました。
Public Function roundup(number As Double, n As Integer) As Double
Dim f
number = number * (10 ^ n)
f = number - Fix(number)
number = Fix(number) + IIf(f <> 0, Sgn(number), 0)
roundup = number / (10 ^ n)
End Function
仕様は、エクセルのroundupと同じです。
モジュールの中にコピペして下さい

投稿日時 - 2004-10-15 18:53:12

お礼

回答ありがとうございます。
わざわざ作っていただいたんですね~!参考にさせていただきます。
ヘルプに「msowcf.dll をセットアップ」すれば使えるような事が書いてあるんですが、これについては何かご存じないですか?

投稿日時 - 2004-10-18 11:50:47

ANo.3

小数点以下の数字を切り上げるには (INT 関数)
http://support.microsoft.com/default.aspx?scid=kb;ja;883012

こちらが参考になると思います。

ちなみに、VBAの Round 関数は銀行型の丸めの処理になります。

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;883012

投稿日時 - 2004-10-15 18:34:02

お礼

回答ありがとうございます。
切り上げの具体的な方法、参考になりました。
Roundup関数が使えないとはっきり判明すれば、利用したいと思います。
(ところで銀行型の丸め処理って、普通のとどう違うんでしょうか。)

ヘルプに「msowcf.dll をセットアップ」と書いてあるんですが、これについては何かご存じないですか?
僕がやった方法ではなぜ使えないんでしょうか(>_<)

投稿日時 - 2004-10-18 11:48:24

ANo.2

AccessにRoundup関数はありません。
=Int([field1]/1.05+0.999)
としてください。

どうしてもRoundupにしたい場合ですがモジュールにて
Function MyRoundup(n As Double,k As Integer)
MyRoundup = Int(n * 10^k + 0.999 ) / 10^k
End Function
として、クエリ上に
=MyRoundup([field1]/1.05,0)

投稿日時 - 2004-10-15 18:24:31

お礼

回答ありがとうございます。
ないんですか?ヘルプに「msowcf.dll をセットアップ」と書いてあるんですが、これについては何かご存じないですか?

投稿日時 - 2004-10-18 11:43:21

ANo.1

RoundUP関数というのは使ったことないのでわかりませんが
ヘルプにRoundUP関数は「ワークシート関数」と付いているので
フォームでは使えないかもしれないような気がします...
(データアクセスページで使える関数なのかな?)

切り上げでしたらRound関数できると思いますが、どうでしょうか?

投稿日時 - 2004-10-15 18:18:43

お礼

回答ありがとうございます。
そうそう、ワークシート関数って書いてあるんですよね・・・何なんでしょうね(^_^;)

Roundは~.dllがなくても使えるみたいですが、四捨五入じゃなくて切り上げをやりたいんですよ・・・

それとも「RoundとIIfを組み合わせて切り上げを実現できるよ」とおっしゃっているのでしょうか?

投稿日時 - 2004-10-18 11:38:15

あなたにオススメの質問