- ベストアンサー
VBで電卓のメモリー機能はどのように作るのですか。
VBを始めて少ししか経っていないものです。 会社で「"実際の電卓"その物をVBで、5月一杯までに作りなさい」と言われました。本を買い何とか数字を文字列に変えたり、四則計算などは出来たのですが、 "平方根と、メモリー機能と、CE(直前の入力された値をキャンセルします)"が載っていなかったので、とても困っています。 どなたかわかる方、教えて頂けないでしょうか。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
えっと、変数の使い方がまだ良く分かってらっしゃらないんじゃないかと推測します。 まず、電卓フォームのコードを表示して、 Dim curMemory as Currency って書きます。 これで、このフォームのすべてのプロシージャから参照可能な、「curMemory」って言う名前の変数(通貨型)が使用可能になります。 んで、まずは「M+」を実装してみます。 フォーム上にボタン「cbMemoryPlus」と、数値を表示するためのテキストボックス「tb表示」が配置されているものとします。 まず、ボタンをダブルクリックで、Clickイベントのコードを表示させた後、 Sub cbMemoryPlus_Click() '「curMemory」に、(「現在の『curMemory』の値」+ 「テキストボックスの値」)をセットする curMemory = CurMemory + val(Me.tb表示) End Sub 「M-」「MC」も同様(あえて書きません。) 「MR」は Sub cbMemoryRecall_Click() 'テキストボックスに「curMemory」の値をセットする Me.tb表示 = curMemory End Sub ですね。 「CE」も同様です。(あえて書きません。) 本を読むのは重要ですが、実際のプログラミングにおいては八割方は、どんな本にも載ってないようなコードを書かなくてはなりません。自分の持てる知識を総動員して、試行錯誤+創意工夫によって答えを導き出さなくてはならないのです。 五月末までにまだ暫くありますので、その間、ご自身がお書きになったコードを1行ずつ読み、そこで何が行われているのかをしっかりと理解しておくようにすれば、いいかもしれません。そうすれば今後似たような問題を出されたとしても、スラスラ解けるようになるのではないかと思います。 ってことで、がんばってください! ※「電卓」は初級コースの問題ですが、これが「関数電卓」になるといきなり上級コースになっちゃうんですよねぇ。 私も昔「電卓」に取り組んだことがありますが、これを関数電卓にアップグレードしようとして悩みぬいた挙句、挫折した記憶があります。(当時は後置記法なんて、微塵も知らんかったもんなぁ。)
その他の回答 (3)
- gokkun
- ベストアンサー率47% (115/244)
メモリー機能はありませんが、参考URL→ダウンロードのソースが参考になると思います。
お礼
お礼が遅くなり、申し訳ありませんでした。とても、参考になっています。 ありがとうございました。
- shigatsu
- ベストアンサー率26% (511/1924)
メモリ付きの電卓は使ったこと有りますか? とりあえずメモリ用の変数を一つ用意して、 M+:メモリ用の変数に現在の値を加算する M-:メモリ用の変数から現在の値を減算する MR:メモリ用の変数の値を現在の値とする MC:メモリ用の変数をゼロクリアする とりあえずこれだけです。そんなに難しい実装は必要ないと思うんですが・・・
お礼
学校に通っている時、簿記などやっていましたので、電卓機能は分かるのですが、どのようにコードを書けばよいのかが、分からないのです。 でも、shigatsuさんのアドバイスを参考にさせて頂きます。お忙しい中、助言有難うございました。
- Masato_a
- ベストアンサー率21% (13/60)
とりあえず、平方根なら「Sqr関数」でできます。
お礼
わかりました。一生懸命頑張ります。有難うございました。
お礼
すみません、間違えて補足のほうに書いてしまいました。細かいアドバイス本当にありがとうございました。
補足
お礼が遅くなり申し訳ありません。ありがとうございました。すみません、折角細かく書いて下さっているのに、私の乏しい知識では自分の(本の)コードのどこに入れたら良いのかが分からないのです。入れる場所はどのようにすれば宜しいのでしょうか。 そして、教えて頂きたいのですが今回はテキストボックスではなく、ラベルで数字を出しているので、説明して下さったテキストの部分をどのように変えれば良いのかが分からないのです。後、ラベルで、数字を12桁以上、表示出来ない様にするには、MaxLengthでやっているのですが、エラーが出てしまいます。どうすれば良いと思われますか。 お時間がありましたら、ご返答の方宜しくお願います。