• ベストアンサー

エクセルのマクロで計算結果を表示させたい

マクロ初心者です。 持っている本ではデータの絞込みの表示のマクロしか載っていなかったので困っています。 材料を変えた箱の重さを表示させたいです。 イメージでは 「高さ、幅、奥行(手入力、可変します)  3つの材料をオプションボタンで選択  (材料の単位あたりの重さはエクセル表内に入力)  (エクセル表内で計算させて)  重さを表示」 というフォームを考えています。 普通にエクセル表にすると3つの材料による重さがすべて表示されてしまいますし 今後 箱の支柱を同じように材料を選択させてその重さも表示させたいので オートフィルタでは支柱の材料の選択ができなくなって しまうのでマクロを使えばできるのかと思いました。 また、マクロ計算式を使うものでの初心者向け参考書でお勧めのものがあったら教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

質問している回答ではありませんが・・・。 > 3つの材料による重さがすべて表示されて・・・ この部分は関数で、何とかなります。 例えばで、見てください。 =高さ*幅*奥行*if(材質="鉄",7.85,if(材質="コンクリート",2.3,0.9)) 等で3つ程度なら、Ifで分岐させる事も可能ですし、別途、数が多くなるようでしたら、VLookUp関数などで比重一覧から参照させる事も可能です。 突然マクロで・・・と言うのは、初心者向けではないので、関数あたりからチャレンジされては、どうですか? そこまで初心者ではないと言う事でしたら、ここは無視してください。

kanekawa
質問者

お礼

ありがとうございました。 VLOOKUPは初めて知りました。 こちらを利用して作ることができました。 マクロは少しずつ勉強していきたいと思います。

その他の回答 (3)

  • e10go
  • ベストアンサー率38% (47/122)
回答No.4

こんばんわ。 マクロの回答ではないですが、 >マクロ計算式を使うものでの初心者向け参考書でお勧めのものがあったら教えてください。 ということですので、 かんたんプログラミング Excel2003 VBA コントロール・関数編,大村 あつし(著) をお薦めします。 また、このシリーズの以下の3点もお薦めです。 かんたんプログラミング Excel2003 VBA 基礎編 かんたんプログラミングExcel2003 VBA 応用編 かんたんプログラミング Excel2002VBA 演習編 VBAの高度な技も、初心者の方でも理解しやすく解説されています。

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/4774119660/ish-22/503-9250461-7915948
kanekawa
質問者

お礼

ありがとうございます。 本屋で探して買いたいと思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

初心者には難しすぎませんか。コントロールを使う、基礎的なことがほとんど出てくるから。 BVEの画面で挿入-ユーザーフォームでUserForm1を挿入。 UserForm1の上に、TextBoxを4つ貼り付ける。 3つは高さ、幅、奥行きの入力用。1つは重さ(結果)表示用です。 材料選択用に3つのオプションボタンを貼り付け。 Captionはそれぞれ、たとえば鉄・銅・アルミとする。 1つのFrameを張りつけ。 Captionはたとえば「材料」とする。 Frame1フレームの上に、3つのオプションボタンをD&Dすること。 3つのオプションボタンの、それぞれのプロパティのGroupNameに(たとえば)G1を設定。 テキストボックスのプロパティでテキスト配置を右詰に設定。 UserForm1にコマンドボタンを1つ貼り付け(結果計算Go!用)。 Captionはたとえば、「計算」 コードはコマンドボタンのクリックイベントに Private Sub CommandButton1_Click() h = TextBox1.Text w = TextBox2.Text d = TextBox3.Text c = h * w * d '------ If OptionButton1 Then t = 1 If OptionButton2 Then t = 2 If OptionButton3 Then t = 3 MsgBox t TextBox4.Text = Format(c * t, "##,###") End Sub MsgBox tは本番では削除。 比重は上例ではでたらめ、すいません。 TextBox1-3の、位カンマ区切りや、チェックやその他諸々の、やったほうが良い点は色々あるが、略します。 OptionButtonのどれを押されたか割り出す、ルーチンは良いものが思い出せないのでとりあえず、上記にした、すみません。 エクセルのシートと関連付けたやり方は Private Sub CommandButton1_Click() Dim sh As Worksheet h = TextBox1.Text w = TextBox2.Text d = TextBox3.Text c = h * w * d '------ Set sh = Worksheets("sheet2") If OptionButton1 Then t = sh.Cells(1, 1) If OptionButton2 Then t = sh.Cells(2, 1) If OptionButton3 Then t = sh.Cells(3, 1) MsgBox t TextBox4.Text = Format(c * t, "##,###") End Sub のようになります。

kanekawa
質問者

お礼

詳しい説明ありがとうございます。 やっぱりマクロは難しかったので 勉強してからこのマクロを作成したいと 思います。 ありがとうございました。

noname#123709
noname#123709
回答No.1

下記の条件にて作成してみました。 3つ位の選択なのでSELECTCASEを使いましたが・・・。 最終結果をメッセージボックスで表示しますが、ダメですかねぇ? ・高さをA2セル・幅をB2セル・奥行をC2セルに入力 ・オプションボタンのリンク先をF1セルとする ・オプションボタンに該当する単位当り重量をG1~G3セルに入力 Sub 算出() Dim H As Variant, W As Variant, L As Variant H = Range("A2").Value W = Range("B2").Value L = Range("C2").Value Select Case Range("F1").Value Case 1 MsgBox "箱の重さは" & H * W * L * Range("G1").Value & "です。", , "計算結果" Case 2 MsgBox "箱の重さは" & H * W * L * Range("G2").Value & "です。", , "計算結果" Case 3 MsgBox "箱の重さは" & H * W * L * Range("G3").Value & "です。", , "計算結果" End Select End Sub

kanekawa
質問者

お礼

ご返信ありがとうございます。 早速やってみます。

関連するQ&A

  • エクセルで分数の計算と表示をしたいのですが

    エクセルで分数の計算の仕方を教えてほしいのですが。 一つの製品が3分割で一つの箱に3つと1/3個入っているのですが、この製品を100個欲しいとなった時、何箱と何分の何箱必要か。という計算をしたいのですまた表示も何箱と何分の何箱(例3・1/3箱?)と表示させたいのですがどなたか解る方がいらっしゃいましたら教えて下さい。 B1のセルに3と3分の1(3・1/3という入力の仕方?)、C1のセルに100個、D1のセルに箱数を分数で表示させたいのです。 何分エクセル初心者の為宜しくお願い致します。

  • 検索結果をセルに表示させるマクロ

    こんにちは。 エクセルのマクロ初心者です。 シート1に作ったあるリストから、シート2のあるセルにキーワードを入力すると、隣のセルに検索結果を表示させるマクロと作りたいのですが…。 エクセルの検索機能を使って、キーワードを入力し、次を検索をクリックすると、シート1のリストの中の部分的に合致するセルをカーソルは選択しますよね? その選択したセル内容をシート2のセルに表示させる方法がわかりません…。 アドバイスいただけないでしょうか。

  • エクセルのマクロのことについてです。

    エクセルのマクロのことについてです。 セル内に入力した日本語でオートフィルタの絞り込み検索をかけるマクロを作りたいのですが、英語ではうまく行っているのですが、日本語ではなぜかうまくいきません。 下記のようにコードを書いているのですが、 どこが間違っているのかご教授いただけませんでしょうか? Dim nihongo As String nihongo = Worksheets("絞り込み").Cells(3.4).Value If nihongo = Empty Then nihongo = "*" End If ActiveSheet.Range("$A$7:$G$100").AutoFilter Field:=4, Criteria1:="=*" & nihongo & "*", Operator:=xlAnd

  • 計算結果が「0」のセルだけを「0」と表示したい。

    エクセル計算表内で通常は・・計算外のゼロは・・画像のように・・「ツール」→「オプション」で「ゼロ非表示」と設定していますが、一部の計算結果が「ゼロになる場合だけ」・・そのセルだけをゼロ・・「0」表示さ せる方法はないでしょうか?・・・ご存じの方、居られましたら・・御指導のほどを!・・・

  • エクセル2000でのマクロ実行後の『再計算』の表示が出てしまう

    Win95+エクセル2000です。 表題の通り エクセル2000でのマクロ実行後ステータスバーに 『コマンド   再計算』の表示が出てします。 Ctlr+Alt+F9で再計算を実行させると 『再計算 28%』と一瞬出て終わります。 マクロが完了していないのかと思うのですが どこで不具合が起きているのか、 どこが原因で再計算の表示が出るのか 簡単に調べる方法はないのでしょうか? 何かご存知の方アドバイスお願いします。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • エクセルにマクロが設定してあります。 入力値を計算

    エクセルにマクロが設定してあります。 入力値を計算し結果を表示するマクロです。 いつもは、値を入力してエンターを押すと計算結果が表示され、その後保存ボタンを押して保存します。 ところが、先日から値を入力後にエンターを押しても結果が表示されなくなりました。 値を入力し、保存ボタンを押すと計算結果が表示されそのまま保存されるようになりました。 原因がわかれば教えてください。

  • 計算式を入れると、結果ではなく、計算式が表示される

    エクセルで、”=”入力から計算式を入力していくと、計算結果ではなく、計算式がそのまま表示されます。 関数でも同様です。 どのようにすれば、通常の結果が表示できるのでしょうか。教えて下さい。

  • excelと電卓で計算の結果が異なって表示される

    =1000/12*0.012 excel2010で上記のように入力した場合、計算結果は「1」と表示されます。 しかし、電卓で計算した場合は、「0.9999999999」と表示されます。 電卓が正しいのですが、excelで正しく計算結果を表示することは可能でしょうか。 (表示形式等は変更してみましたが正しく表示されません)

  • エクセル2003 マクロ

    オートフィルターを使って、「○○を含む」と抽出する事をマクロで行いたいです。○○に入る抽出の条件は変動します。どこかに入力値を持たせておく必要があると思うのですが、マクロについては初心者でほとんどわかりません。どなたか教えてください。よろしくお願いします。

専門家に質問してみよう