• ベストアンサー

MicrosoftAccess2000 消費税の計算方法 他の方法を教えてください

MicrosoftAccess2000「見積請求納品システム」を使用しています。 来月から取引先の一社のみ消費税の計算方法を四捨五入に変更します。 知識不足のためシステム自体の変更は諦めました。 1.通常通り作成 2.印刷前にデスクトップに見積請求納品システムのコピー作成。 3.請求書コマンドマクロのデザインビューを開く。 マクロ名:計算2 アクション:値の代入 アイテム:[Forms]![請修フォーム]![消費税額] 式:Int(CCur([Forms]![請修フォーム]![税抜金額]*0.05)) 4.上記に該当するマクロの式を下のように変更。 round([Forms]![請修フォーム]![税抜金額]*0.05,0) 5.工数・数量を再入力して四捨五入されたデータを作成。 6.それを印刷して終了。 今は上記の方法しか思いつかないのですが他にあれば教えてください!!

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

考え方だけでいいですか。 いろいろな方法はあると思いますが、私なら・・・ということで、外していること大 取引先テーブルの項目に、「加算」を追加します。 四捨五入する取引先の「加算」を、「0.5」に設定し、他を「0」としておきます。 式のところで、 Int(CCur([Forms]![請修フォーム]![税抜金額]*0.05)+DLookUp("加算","取引先テーブル","取引先名='" & [Forms]![請修フォーム]![取引先名テキストボックス名] & "'")) としてみるとか。 ※   "取引先名='" & [Forms]![請修フォーム]![取引先名テキストボックス名] & "'"  部分は、  "取引先ID=" & [Forms]![請修フォーム]![取引先IDテキストボックス名] でも 外していましたら、スルーしてください。

noname#137913
質問者

お礼

取引先テーブルの項目に、「加算」を追加しました。 長整数型にすると0.5が入力できないので倍精度浮動小数点型にしました。 請求書コマンドマクロを アイテム:[Forms]![請修フォーム]![消費税額] 式:Int(CCur([Forms]![請修フォーム]![税抜金額]*0.05)+DLookUp("加算","得意先名テーブル","得意先名='" & [Forms]![請修フォーム]![得意先名] & "'")) としました。 この式にすると他の方が作成する時に通常通り作成できるので、こちらの方法でやってみようと思います! ご指導ありがとうございました!!

その他の回答 (4)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

Accessが確認できない関数がある、とエラーを だすようであれば、Functionの先頭にPublic をつけて、 Public Function func四捨五入(xCy As Currency) As Currency If xCy > 0 Then xCy = Int(xCy + 0.55) Else xCy = Int(xCy - 0.55) End If func四捨五入 = xCy End Function のように、してみてください。 また、関数名を変更した場合も Public Function funcSG(xCy As Currency) As Currency If xCy > 0 Then xCy = Int(xCy + 0.55) Else xCy = Int(xCy - 0.55) End If funcSG = xCy End Function のようにします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

関数の名前の変更はコードの名前を以下のように 変更してから使います。 もとはfunc四捨五入ですが、funcSGとすれば 書き間違いが起こりにくいので、 Function funcSG(xCy As Currency) As Currency If xCy > 0 Then xCy = Int(xCy + 0.55) Else xCy = Int(xCy - 0.55) End If funcSG = xCy End Function このように変更しておいて実際場面で使って みてください。 funcSG([Forms]![請修フォーム]![税抜金額]*0.05) もちろんfunc四捨五入でもかまいません。 いろいろ伝えてすみません。

noname#137913
質問者

お礼

関数の名前の変更をしたらできました! ありがとうございます! 他の社員が通常通り作成できるので 0.5を足す方法で進めることにしました! そうすると、これからは得意先名登録時に 加算フィールドに入力することになります・・・ まだフォームに追加していないので まだまだ改良すべきところがありそうです・・・ またご指導宜しくお願い致します!!!

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

登録の仕方を記しておきます。 (1) データベースウィンドウの右側の モジュールという項目をクリックします。 (2) 新規作成をクリックすると、コードを 書き込むページが開かれます。 (3) そこに、コードを貼り付けます。 (4) 上書き保存をクリックします。 (5) モジュール1とかで保存するか聞いて きます。 (5) はいを押して保存します。 (6) 保存されたモジュールを開いて 関数があるか確認します。 なければ、貼り付けて保存してください。 一応、ここまで確認してください。 マクロを実行してみてください。 中身のないモジュールは 削除していいです。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

以前の質問を見ていましたが、 一社のためのシステムの変更は 大変だなと思いました。 システムの手直しは先にしておいて、 えー、他の方法と言われても何か 他に応用ができるものがいいのでしょうが、 マクロはまったくと言っていいほど 使わないので、気がついた点について 関数を提案します。 消費税の計算は、四捨五入、切り上げ、切り捨て、 によって計算が異なりますが、四捨五入という ことで、以下にします。 いろいろ方法はありますが、round関数は 使わないでください。round関数について 思った丸めは出来ません。そのかわり 関数を設定します。Int関数あるいは Fix関数を使用して関数を作ります。 簡単なところで、以下の関数があります。 0.55を足したり引いたりして端数の 四捨五入の処理を行います。 Function func四捨五入(xCy As Currency) As Currency If xCy > 0 Then xCy = Int(xCy + 0.55) Else xCy = Int(xCy - 0.55) End If func四捨五入 = xCy End Function この関数を標準モジュールに貼り付けます。 使い方は、たとえば、 Forms![frm納品]![frmsub納品書明細].Form.[当該掛売単価] = func四捨五入([設定単価]*0.75) のように掛売りなどの場合に少数点以下が発生 するような掛売単価の設定などの場合に使用します。 したがって、この場合は、 func四捨五入([Forms]![請修フォーム]![税抜金額]*0.05) func四捨五入という関数名は適当に変更 してください。 この関数は、関数内の0.55を変更すると 他の場合にも使用できます。 また、先の話として、このような関数を いくつか作っておいて、顧客テーブルに 消費税計算定義を作って、顧客毎に 計算方法を変更できるようにするという ことも視野にいれておいてはいかが でしょうか。実際にこのようにしている ところもあります。少しVBAを使います。 また機会があれば、では。

noname#137913
質問者

補足

他の人が請求書を作成する時のために、もっと簡単な方法を見つけたいと思っています。 Accessのオブジェクトのモジュールで新規作成しpiroin654さんのおっしゃっていた式を貼り付けました。 ただ閉じるとモジュールが作成されないようなので「見積納品請求システムの上書き保存」をしました。 5つくらい作成されてしまったので中身を確認して「Module1」という名前で一つだけにしました。 請求書コマンドマクロの アイテム:[Forms]![請修フォーム]![消費税額] の式を func四捨五入([Forms]![請修フォーム]![税抜金額]*0.05) にしました。 工数・数量を入力して四捨五入のデータを作成しようとすると 指定した式にMicrosoftAccessが見つけることのできない関数名が含まれています。 というエラーになります。 一応IT辞典で標準モジュールについて調べたのですがいまいち分からなかったので式を入力する場所が間違っているのでしょうか・・・ 将来的には顧客毎に計算方法を変更したいです! ご指導宜しくお願い致します!

関連するQ&A