[[20031125145549]] 『ユーザーフォーム上で計算できますか?』(りこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォーム上で計算できますか?』(りこ)

 VBA初心者のりこです。
再度解らない所がでてきてしまい苦戦しています。どなたか助けて下さい。

 ユーザーフォーム上に下記の3つのテキストボックスを作成しています。

   @請求額合計 A税抜き価格 B消費税

@の請求額合計を入力するとAとBが自動でユーザーフォーム上のテキストボックス
に表示することってできるのでしょうか・・・。
電卓で計算してかAとBを入力していたのですが、@を入力すると自動で入力で
きるようにと依頼がありました。
ワークシート上なら計算式を入れればいいのですが、ユーザーフォームの上だと
どうしたらいいのかさっぱり解りません。
本当に無知で申し訳ございません。どなたか宜しくお願いします。
ちなみに今はこのようなコードで直接入力するようにしています。

 Range("a4") = 請求入力.TextBox1.Text  
 Range("b4") = 請求入力.TextBox2.Text
 Range("c4") = 請求入力.TextBox3.Text


 計算式がよく分かりませんが、
  TextBox3.Text = TextBox1.Text + TextBox2.Text  
 のように普通に式を記述すれば、計算できます。
 (正しく数値が入力されていればですが・・)
 また、VBA上でワークシート関数を使うこともできます。

 あとは、いつこの計算を実行させるかによってイベントを決める必要があります。
 簡単なのは、コマンドボタンを配置して、クリックイベントで
 計算を実行させることです。
 
 それ以外のイベントで、TEXTBOXからフォーカスが外れたときなど、いろいろ可能です。 
 (INA)


   INA様、早速ありがとうございます。説明下手でごめんなさい。
 それぞれA4、B4、C4に金額を入力したいのですが、
 B4とC4を自動でユーザーフォームのテキストにのせたいのです。
  a4=請求合計 TextBox1
  b4=税抜き価格 TextBox2(請求合計/1.05)  
  c4=消費税 TextBox3 (請求合計*5/105)
 INA様のおっしゃるとおりコードを記述してみましたが無反応でした。
 ちなみにCommandButton1を最後にクリックするとセルにテキストボックスの
 値がワークシートに表示されるようにしたいのですが・・・。
 Private Sub CommandButton1_Click()
    Range("a4") = 内容入力.TextBox1.Text
    TextBox2.Text = TextBox1 / 1.05
    Range("b4") = 内容入力.TextBox2.Text
    TextBox3.Text = TextBox16.Text * 5 / 105
  Range("4") = 内容入力.TextBox3.Text
 End Sub

 専門的な言葉がわからないのでどう説明していいのか解らないのですが・・・。
 (りこ)


 追加です!すいません、きちんと確認していませんでした。
 ワークシート上には表示されました。
   
 ユーザーフォーム上では何かキーボードを入力すれば表示されるのですが
 Enterでは表示できません。
(TextBox1に入力したらTextBox2とTextBox3に表示したい)

 要望ばかり言って本当にごめんなさい。
(りこ)


 TextBox1_ExitイベントでTextBox2とTextBox3を計算したらいかがでしょう。
  Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox2.Text = TextBox1 / 1.05
    TextBox3.Text = TextBox1.Text * 5 / 105
  End Sub

 Private Sub CommandButton1_Click()

    Range("a4") = 内容入力.TextBox1.Text
    Range("b4") = 内容入力.TextBox2.Text
  Range("c4") = 内容入力.TextBox3.Text
 End Sub

 ただし、Round関数で端数処理する必要ありそうですけど。
 (KAMIYA)

 私の守護神、KAMI様、こんばんわ。
 素晴らしいイベントをご存じでんなあ。

 で、私の提案ですけど、こんな案配にしたらどうでっしゃろ。
        TextBox2.Text = Application.Round(TextBox1.Text / 1.05, 0)
        TextBox3.Text = TextBox1.Text - TextBox2.Text

 Round関数を使うとTextBox3に誤差が生じるかも知れまへんさかい、アッサリ引き算
 にした方がええんやおまへんやろか。
   ほな...(弥太郎)

 KAMIYA様、弥太郎様おはようございます。
 早速試してみたところ、おもいどおりにできました。
 本当に感謝感謝です。自分の知識の無さが恥ずかしい限りです・・・。
 これからもお世話になると思いますがどうぞ宜しくお願い致します。
  (りこ)
 


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.