現在知識が全くない状態でマクロを使ったプログラミングを改良しようとしています。
現在のプログラミングでは、与えられたデータをあらかじめ計算し、その値を直接プログラミングに組み込んでます。
今回は直接プログラムに打ち込んである値を、別シートのマクロで自動的に計算し、その結果をプログラムが読み込むようにしたいと思います。
簡単に言えば、マクロのプログラムに直接計算結果を組み込むのではなく、別シートで計算したものをプログラムに組み込みたいということです。
例として、
100円と200円の商品を買い、それを二人で半分ずつ支払う計算結果と
200円と400円の商品を買い、それを二人で半分ずつ支払う計算結果
をプログラムに組み込むとすると、現在では一人あたり150円と、300円という数字を直接プログラムに打ち込んでいます。
これを、別シートで計算し、それをマクロのプログラムに読み込ませることは可能でしょうか?
また、可能ならば、大体の流れはどういったものになるのか教えてもらえませんでしょうか?
よろしくお願いします。
No.2
- 回答日時:
では・・オナカイッパイになりつつも、消化の良い食事を目指して
私からも一皿だけ振る舞わせてくださいませ(笑)。
1番さまから模範解答が出ていますし、その二番煎じも良いところですので、
どちらかと言うと「飲んだ後のラーメン」かもしれません(笑)。
さてさて、例として提示されている
> 100円と200円の商品を買い、それを二人で半分ずつ支払う計算結果
これについて見ていきます。
この計算を「エクセルのシート上で計算させるとしたら」どうされますでしょう?
基本で考えると、A1セルに「100」、B1セルに「200」と数字を直接打ち、
C1セル辺りに「=(A1+B1)/2」くらいで入力していきますね。
この中の
C1セルに「=(A1+B1)/2」
の部分をVBAに書いてやるのがまずは簡単かと思います。
ものすごく簡単に書くと
Sub Test1()
Range("C1").Value = "=(A1+B1)/2"
End Sub
もうコレだけです。ダブルクォーテーション「"」がミソです。
続いて、こんな書き方。
Sub Test2()
Range("C2").Value = (Range("A2").Value + Range("B2").Value) / 2
End Sub
コレでもOKです。計算をVBAの中だけで完結させる方法です。
二つの違いに注目してくださいませ。
上記Test1は「計算式」をC列に返しますが、
Test2は「計算結果」をC列に返します。
コレがVBAによる計算の大体の基礎です。
これらの他にも、1番さんの回答に見られるように「変数」をつかってみたり、
さらに進んで「配列」を使ってみたり、
いろんな書き方がありますので、お好みで、あるいは場合によって
書き分けられるようになると書いていて楽しくなってきますよ。
では、蛇足ではありますが、ちょっとだけお遊びコードを。
Sub SampleM()
Dim Val1 As Long, Val2 As Long
Dim Ans As Long
Val1 = Application.InputBox(prompt:="一つ目の数値を入力してください", _
Title:="数値1指定", _
Type:=1)
If Val1 = False Then
MsgBox "キャンセルされました。" & vbNewLine & _
"処理を中止します", vbOKOnly, _
"処理中止"
Exit Sub
End If
Val2 = Application.InputBox(prompt:="一つ目の数字は「" & Val1 & "」です。" & vbNewLine & _
vbNewLine & _
"二つ目の数値を入力してください。", _
Title:="数値2指定", _
Type:=1)
If Val2 = False Then
MsgBox "キャンセルされました。" & vbNewLine & _
"処理を中止します", vbOKOnly, _
"処理中止"
Exit Sub
End If
Ans = (Val1 + Val2) / 2
MsgBox "一つ目の数字は「" & Val1 & "」です。" & vbNewLine & _
"二つ目の数字は「" & Val2 & "」です。" & vbNewLine & _
vbNewLine & _
"二人で割ると「" & Ans & "」です。", vbOKOnly, _
"計算結果"
Range("A2").Value = Ans
End Sub
こんなやり方も無しではないですね^^;
回答ありがとうございます。
今回組もうと思っているプログラムでは多くの数字を扱わなければならなく、計算式が膨大になってしまうことが考えられるため、より簡単にわかりやすい計算を組もうと思っています!
より簡単に組めるように参考にさせていただきます!
最後のプログラムは、これは計算したい数値を利用者が代入するかたちになるのでしょうか?
難しそうですが、マスターすれば視野が広がりそうです!
ありがとうございました。
No.1ベストアンサー
- 回答日時:
たとえば。
sub macro1()
dim res
res = 1 + 2
range("A1") = res
end sub
こういった具合に,「res」という計算結果をA1セルに記入します。
resの具体的な計算内容は,「1+2」という具合にマクロに直接記入されています。
これを。
sub macro2()
dim x1, x2, res
x1 = worksheets("Sheet2").range("A1").value
x2 = worksheets("Sheet2").range("A2").value
res = x1 + x2
worksheets("Sheet1").raneg("A1") = res
end sub
こういった具合に,「resの結果をA1に記入する」は同じですが,
resの具体的な計算内容として
1.シート2のA1をX1に一回受ける
2.シート2のA2をX2に一回受ける
3.X1とX2を使ってresを計算する
といった段取りで組み立てることができます。
#補足
こういう内容は,エクセルマクロの「一番最初の基礎」です。
基礎過ぎて,いろんな書きぶり(=応用)ができるので,恐らく様々な回答が寄せられて,見ているだけでもオナカイッパイになってしまうと思います。
どれでなきゃならないってのも無いので一つずつマスターしていって欲しいとは思いますが,今は目の前の仕事優先で「マクロの勉強がしたい」んじゃないと思いますので,どれでも一個使ってやっつけてください。
まさに補足の通りです。すこしマクロの本読んだ程度です。
これから一つずつマスターしていかねばならないため、しっかり参考書を読みます。
また、マクロのことで質問するかもしれませんのでその時も回答よろしくお願いします。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CPUの問題について 2 2022/07/09 12:04
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
- 経済学 マクロ経済学の問題で「均衡所得」の求め方が分かりません。 1 2022/11/20 13:31
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- Visual Basic(VBA) vbaマクロについて 【シート2】をもとに【シート1】に有るものを「有り.csv」としてデスクトップ 3 2023/05/07 22:30
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# C言語 3 2022/10/04 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vb6.0で三角関数が使えない
-
変化させるセルが変化しない
-
やってみてもわからないので教...
-
C# 計算処理中に実行中ウィン...
-
MATLABの積分について
-
C言語で、漸化式を使ってパスカ...
-
スライムがつぶれていく様子を...
-
絶対ち
-
VBAの再計算が反映されない件に...
-
JavaScriptでSQLiteの値を使いたい
-
Excel VBAの残業時間の合計計算...
-
VBでReplace
-
Java 電卓の連続計算
-
あのコンピュータアーキテクチ...
-
60進数の四則計算
-
バッチファイルでウインドウを...
-
スパイダソリティアの問題
-
MathematicaのNDSolveで連立常...
-
65536は2の何乗なのでしょうか?
-
素数を自動的に作る
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報