• ベストアンサー

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

マクロ初心者です。 持っている本ではデータの絞込みの表示のマクロしか載っていなかったので困っています。 材料を変えた箱の重さを表示させたいです。 イメージでは 「高さ、幅、奥行(手入力、可変します)  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/17070)
回答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