• ベストアンサー

VBA 初心者

VBAでの計算方法についてです。 まず、リストやコンボボックスで選択肢を作り、選択された内容の値を使った計算をしていきます。 そして、テキストボックスより、数字の入力を行い、結果を表示します。 例としては、自動車や自転車をどちらかを選択して、 X=2*3 y=4/3 という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) その結果をテキストボックス6に表示させるというコードです。 やってみると0の値しか表示されません。 もしこの説明でわかるなら、解決方法を教えください。

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

  • ベストアンサー
noname#144013
noname#144013
回答No.2

こんにちは。 「VBA」とのみ言われましても、Excel、Word、Outlook、etc...など、いろいろ ありますので、以下は、Excel VBAの話しとして仮定させて頂きます。 > まず、リストやコンボボックスで選択肢を作り、選択された内容の値を使った計算をしていきます。 > そして、テキストボックスより、数字の入力を行い、結果を表示します。 とありますので、フォーム上に貼り付けた、各種コントロールの操作の仕方と解釈 致しました。 ■不明点その1 > 例としては、自動車や自転車をどちらかを選択して、 > X=2*3 > y=4/3 > > という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) > > その結果をテキストボックス6に表示させるというコードです。 上記の   > 例としては、自動車や自転車をどちらかを選択して、 というのは、計算式に、どのように関係してくるのでしょうか? ■不明点その2 > X=2*3 > y=4/3 > > という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) この、y=4/3 という式は、 > という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) この計算式の中には、使われていないのですが、どういうことでしょうか? ■マクロ(VBA)の記述例(※憶測した上での一例です) 以上のような不明な部分がありますので、以下は、憶測した上での記述例です。 フォーム上の各テキストボックスのオブジェクト名を、下記と仮定します。   テキストボックス3 ⇒ TextBox3   テキストボックス4 ⇒ TextBox4   テキストボックス5 ⇒ TextBox5   テキストボックス6 ⇒ TextBox6 計算を行うタイミングは、フォームに設置した「計算実行」ボタンを押した時の ボタンクリックイベントの処理として行うものと仮定します。 それから、X と Y の値は、文字列ではなく、コード内で以下のような固定の 計算式として、Double型の数値として持つようにしています。   Dim dX As Double   Dim dY As Double   dX = 2 * 3   dY = 4 / 3 '←※こちらは未使用 ◎「計算実行」ボタンのクリックイベントのマクロ 注)インデント等のため全角スペースを入れています。 /////↓ここから/////////////////////////////////// '== [計算実行]ボタンのクリック時の処理 == Private Sub CommandButton1_Click()   '各テキストボックスに数値が、入力されているかチェックする   If IsNumeric(TextBox3.Text) = False Or _     IsNumeric(TextBox4.Text) = False Or _     IsNumeric(TextBox5.Text) = False Then     '数値でなかった場合は、メッセージを表示して処理を抜ける     MsgBox "各テキストボックスには、数値を入れて下さい。", _       vbOKOnly Or vbExclamation     Exit Sub   End If   'テキストボックス5の数値が、0でないかチェックする   '※TextBox5の値は、割り算での分母の値なので、これが0だと   ' 計算エラーとなるため、これはその回避策です。   If TextBox5.Value = 0 Then     '数値が0だった場合は、メッセージを表示して処理を抜ける     MsgBox "テキストボックス5には、0以外の数値を入れて下さい。", _       vbOKOnly Or vbExclamation     Exit Sub   End If   '各テキストボックスの入力値より次の計算を行う   '※計算式 = TextBox3 * TextBox4 * dX / TextBox5   Dim dX As Double   Dim dY As Double   dX = 2 * 3   dY = 4 / 3 '←※こちらは未使用   '念のため、TextBox5が0でないかをチェックして計算を行う   If TextBox5.Value <> 0 Then     TextBox6.Value = TextBox3.Value * TextBox4.Value _             * dX / TextBox5.Value   Else     TextBox6.Value = 0   End If End Sub /////↑ここまで/////////////////////////////////// 以上です。 的外れでしたらすみません。 参考になれば幸いです。

その他の回答 (1)

  • gandl
  • ベストアンサー率46% (6/13)
回答No.1

(テキストボックス3*テキストボックス4*X/テキストボックス5) のXに格納される値は「2*3」ですよね? でもこれは文字列として格納されてるだけなので計算はできないと思います。 やり方とすれば、 sXY = "X" か "Y" 'まずXかYを判定(リストから取得) if sXY = "X" then s1=2 'リストから値を取得 s2=3 'リストから値を取得 (テキストボックス3*テキストボックス4*s1*s2/テキストボックス5) elseif sXY = "Y" then s1=4 'リストから値を取得 s2=3 'リストから値を取得 (テキストボックス3*テキストボックス4*s1/s2/テキストボックス5) end if こんな形になると思いますが、どうでしょうか。

関連するQ&A

  • VBA初心者です。

    VBA初心者です。 ユーザーフォーム上にテキストボックスとコンボボックスを1つずつ作りました。その二つを以下のように関連させています。 Private Sub ComboBox2_Change() 'コンボボックスの値で100を割ったものを、小数第三位を四捨五入してテキストボックスに表示する TextBox1.Value = WorksheetFunction.Round(100 / ComboBox2.Value, 2) End Sub コンボボックスのリストから値を選択したり、直接値を入力するときちんとその通りになってくれるのですが、コンボボックスの値をBackSpaceで消すと、「実行時エラー'13':型が一致しません」と出ます。デバックで落ちるのはこの部分なので、このプログラムに問題があると思うのですが、どこがいけないのかが分かりません。問題点が分かる方、ぜひ教えて下さい。

  • エクセルVBAについて質問です。

    エクセルVBAについて質問です。 シート1のユーザーフォームにコンボボックスとテキストボックスが各1つずつ、 シート2のA列には1行目から順に「あ」「い」「う」と文字が入っていて、B列には「1」「2」「3」と値が入っています。 コンボボックスのリストにはシート2のA列の文字が選択できる状態にあります。 この状態で、例えばコンボボックスで「い」を選んだら、テキストボックスに自動的に「2」と入る、というように、コンボボックスのリストの中から任意の文字を選択したときに、テキストボックスにB列の値が入るようにするにはどのようにすればいいのでしょうか?よろしくお願いします。

  • エクセルVBAでコンボボックス

    エクセルVBAのコンボボックスの使い方について質問します。 実現したいプログラムは 「チェックボックスから選んだ数字で計算するプログラム」 です。 具体的には… まず、コンボボックスをシート上に配置します。そのコンボボックスには 数字の1から10を選べるようにしておきます。 次に、コマンドボタンを配置します。これは単にプログラムをスタート させる目的です。 ユーザーは、まずコンボボックスから好きな数字を選択します。 そしてスタートボタン(コマンドボタン)を押します。 すると、選んだ数字の2倍がセルに表示されます。 さらに発展系としては… チェックボックスを4つ配置します。各チェックボックス には、+、-、×、÷を割り振っておきます。 また、コンボボックスを2つ用意し、それぞれ1~10の数字をリストにします。 ユーザーは、チェックボックスから好きな記号を選び、さらにコンボボックスから 好きな数字を選びます。そしてスタートボタンを押すと、選んだ数字を選んだ記号 で計算した値がセルに表示されます。 というようなプログラムを考えているのですが、うまくできません。 ポイントは、 ・チェックボックスにリストを入力する方法 ・チェックボックスの選択状態や、リストボックスから選ばれた数字を、  変数として取得する方法 インターネットで調べているのですが、リストボックスに値を入れるのにもマクロを走らせ なければならない方法とか、ユーザーフォームでの説明ばかりでなかなか実現に至りません。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform05.html プログラムのイメージ図としては添付の図の通りです。 どのようにプログラムを書けばいいのでしょうか。

  • Excel VBA ユーザーフォームのコンボボックスに表示する値の入力方法

    Excel Xを使用して、VBAのユーザフォームにコンボボックスを作りましたが、どうしてもコンボボックス内に表示する値の入力方法が分かりません。 WEBや本などで「これ」と思われるものを実験していますが、どれも表示することができません。 できるだけ詳しく教えていただけませんか? したいことは、  cbocenter というコンボボックスに値を出します。  値は List シートの A2 から A18 に入力済みです。  それと値から選択した値を data シートの J列 に  表示させたいのです。(行の指定はできています) 本当に困ってます。よろしくお願いします。

  • エクセルシートでVBAについての質問です。

    VBA初心者です。 エクセルのシート上にコンボボックスを配置してリストを選択すると同じシート上のセルに選択されたリストが表示されるようにしたいのですが、よくわかりません。 コンボボックスのオブジェクト名は名前ボックスに表示される名前でいいのでしょうか? 詳しい方ご教授お願いします。

  • VBA初心者です。

    VBA初心者です。 ユーザーフォームにテキストボックスとコンボボックスを1つずつ作り、それらを Private Sub ComboBox1_Change()    TextBox1.Value = ComboBox1.Value End Sub というふうに繋いでるとき、テキストボックスにフォーカスをあてさせないようするため、 Private Sub UserForm_Initialize()    TextBox1.Enabled = False End Sub このようにしました。ここまでは問題ありません。質問したいことは、このときテキストボックスに表示させる文字が淡色になるのを防ぐ方法です。    TextBox1.Locked = True これを上に付け加えればうまくいきそうなのですが、うまくいきませんでした…。どなたか解決方法を教えて下さい。

  • VBA初心者です。教えて下さい。

    VBA初心者です。 すいません教えて下さい。 たくさんのテキストボックスに決められた値を入れたいです。 今は1つ1つのテキストボックスに静的に直書きしています。 (理由は聞かないで下さい、、、^^;) 【今】 ---------------------------------------- TextBox0.Text = "0です" TextBox1.Text = "1です" …(省略) TextBox100.Text = "100です" ---------------------------------------- これをもっとスマートに出来ればと思い"For"を使いました。 【やりたいやり方】 ---------------------------------------- For i = 0 To 100 TextBox & i .Text = i &"です。" Next ---------------------------------------- 、、、が当然の結果、i変数を扱うことが出来ずにエラーになります。 どうにかスマートに実現する方法はありませんでしょうか? 申し訳ありませんがご教示頂ければと思います。

  • OpenOfficeのコンボボックスについて

    今open officeを使用し、calcで簡単なインターフェースを作成しています。 困っている点は、コンボボックスの数値データを、”数値”で読み取りたいのですが、コードの書き方が分からなくで困っており、ご教授お願いしたいです! (ネットなどで検索しましたが、未熟なためか、応用できそうなサンプルが見つけられなかったです・・・)。 まず、どんな感じのシステムを作ろうとしているかというと、以下の感じです。 1.baseにて数値を代入したテーブルを作成 2.1で作ったテーブルを基に、calc上でコンボボックスを2つ作成 3.calcのセル上で、2つのコンボボックスの数値を読み取り、処理 4.3の処理結果を、calcの特定のセルに表示 3について、簡単な具体例を用いて補足させて頂きます。 ・ xコンボボックス(以下x)とyコンボボックス(以下y)の2つがあるとします。 ・ xとyにはある程度数値のリストが設定されていますが、正の整数であれば、リストになくても直接入力することが可能です。なので、リストにない数値のパターンでの処理結果も見れます(使いやすさを考えてこうなりました) ・ xとyの数値による処理結果をA1のセルに表示するとします。 ・ xの初期表示は「1」、yは「2」とします。 ・ 初期表示の状態から、xのリストにある「2」を選択します。すると、x=2とy=2の数値による処理結果をA1に表示します。 つまり、xかyのどちらかの数値を選択or入力すれば、その時点でのxとyの数値による処理をA1に反映させることができるって感じです。ユーザー的には、一回だけの動作で処理結果をA1に反映させることができるので、ポンポン次々と処理結果を見れるようなインターフェースにする予定です。 このような仕様にしたいんですが、コンボボックスの扱いが分からなくて困ってます。 なんとか円滑にコンボボックスの数値を読み取る方法さえわかれば。それ以外の部分はできているのですが・・・ まだopen officeでマクロを使い始めて数日ばかりの未熟モノです^^; 分かりづらい説明かと思いますが、ご教授願いますm(_ _)m 投稿日時 - 2011-07-18 05:19:42

  • Excel 2002 VBA でシート上のオブジェクトに値を入れたい

    シート上のコンボボックス、リストボックス の値をVBAで指定することは可能でしょうか?

  • Access VBA

    Access 2000 についての質問です。 下記のようなフォーム上のコンボボックスで 商品、産地、サイズを選択 →テキストボックスに個数を入力 →見積りボタンをクリック →テキストボックスに合計金額を表示 ----------------------------------------- フォーム  コンボ コンボ コンボ   テキスト  商品  産地  サイズ   個数 ボタン        テキスト 見積り        金額:______円 ----------------------------------------- というものを、下記の表に基づいて作りたいのです。 単価.xls ===================== 商品  産地 サイズ 単価 みかん 和歌山 L  30 リンゴ 青森  M  50 リンゴ 青森  L  70 リンゴ 長野  L  70 ===================== そこで、コンボボックスで選択した値を活かして 単価.xlsの ”単価”の値を利用して テキストボックスに表示したいのですが、 どのように記述すれば使用できるのか?わかりません。 超初心者ですのでわかりやすく教えてください。よろしくお願いします。

専門家に質問してみよう