ここから本文です

VBAの代入演算子 = がよくわかりません。

アバター

ID非公開さん

2020/7/715:21:53

VBAの代入演算子 = がよくわかりません。

Dim A
A=inputbox("金額を入力")
A=A×1.10
Msgbox = "税込価格は"&A&"円です。"

A=inputboxでAに金額を代入した事はわかります。

次のA=A×1.10では、同じAに代入するのでしょうか?代入したinputboxはAへの代入から外れ、次に代入したA×1.10に置き換わるのでしょうか?

さらに右辺、左辺ともにAがありますが、なぜAをAに代入できるのがよくわかりません。
仮にB=A×1.10だとすればわかります。

閲覧数:
65
回答数:
4

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2020/7/715:51:32

変数「A」は、特定のメモリに「A」という名前を付けた、と考えてください。

プログラムでは、「=」の右辺から見ます。

したがって、「A×1.1」です。

まず、メモリ上の「A」の値を参照して、それに「1.1」を掛け、その計算結果を、また、メモリ上の「A」の中に入れているわけです。

要するに、プログラム上では、「=」は、数学的な「=」ではなく、「代入」の意味なのです。

If a = b Then

のようなときの、「=」は、「等しい」ですが、そのようば場合以外の「=」は、あくまでも、左辺の演算結果を右辺に入れる、ということなのです。

したがって、「If a + 1 = b Then」というようなことはできますが、単に「a + 1 = b」はあり得ません。

「a = b - 1」なら、問題ありません。

「a + 1」という名前の変数はないからです。

アバター

質問した人からのコメント

2020/7/7 22:41:25

右辺をまず見て結果を左辺にまた代入する。でスッキリしました。他の皆さんもありがとうございました。助かりました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

fro********さん

2020/7/716:41:55

A = A
これ、=の左のAと右のAは意味が違うんです。
左のAは、変数Aに代入するのは という意味です。
右のAは、変数Aに代入されている値だよ という意味です。

例えば、最初のインプットボックスで10を代入したとしましょう。
A = 10
変数Aの中身は今10です。

次にA*1.10をしてみましょう。
変数Aにはインプットボックスで代入した10が入っています。
A = 10 * 1.10

最終的に変数Aに入るのは11です。

では、1をプラスしてみましょう。
A = A + 1
Aにはまだ11が代入されています。
表記を変えると
A = 11 + 1
となります。

ここまででAの中身は12になりました。

こんな感じで数を増やしたり減らしたり、代入される中身を変更できるのが変数です。

プロフィール画像

カテゴリマスター

a_h*******さん

2020/7/715:51:07

>さらに右辺、左辺ともにAがありますが、なぜ
>AをAに代入できるのがよくわかりません。
算数や、数学の式のことは忘れてください。
プログラム言語で計算式の場合は
左辺=右辺
の場合、「左辺と右辺は等しい」ではなく「右辺を左辺に代入する」という意味になります。

ですので、数学ではあり得ない
A=A+1
と、いうような式も成立します。
上記の式の場合は、
Aと1を合計して、Aに代入する
ということになり、結果的に
「Aの値を+1する」ということになります。


-----
Dim A
A=inputbox("金額を入力")
☆Aは入力された数字・・・・①

A=A×1.10
☆右辺のAは入力された数字①のAの値
☆左辺の数字①のAの値X1.10した計算結果の値・・・・②

Msgbox = "税込価格は"&A&"円です。"
☆②のAの値が表示される。

常に、Aという変数の結果は変化していくと言うことです。
もちろん、左辺と右辺が等しいという意味ではありませんので


A<=inputbox("金額を入力")
A<=A×1.10
Msgbox ( "税込価格は"&A&"円です。")
とすべきかもしれませんが、プログラムでは

IF文などの条件の時に限って「=は等しい」という解釈になります。
IF A=0 THEN Msgbox ( "税込価格は計算出来ません。")
とか。

プロフィール画像

カテゴリマスター

2020/7/715:32:02

Aを車だとします。Bをお父さんだとします。
車にお父さんが乗り込みました。
A+Bになります。このA+Bを新たにCと呼んでもいいのですが、
A = A + B
これは計算の結果でなく、◯=□とする事で◯と□は同じであるという使い方になります。
さて、これで A = の A の方は、最初からあったAではなく、お父さんBが乗り込んだ状態です。
ここに子供Cがさらに乗り込みます。
A = A + C
になるんですが、この時の A = は
= A + B + C
という意味になるんですね。
以降、子供が乗り込む旅に A +B +C ...Z+ なんてやってたら、何が書いてあるんだか判らなくなります。
なのでAでまとめているわけです。

単純に言うと、「=」 があるから 「→」 方向へ意識が行ってしまい、「足してるのに何で」って思ってしまうのでしょうが、「→」ではなく中心の「=」から「←=→」という動きを想像するといいです。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる