qii-yah
@qii-yah

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VBAの基礎

Q&A

Closed

解決したいこと

今、VBAの基礎を学習しておりまして、以下のソースの問題と回答があります。

4行目の A = A & "-" & "Excel"の
右辺のAの意味がわかりません。
これがなくても "-" & "Excel" だけで
-Excel-Excel-Excel
という表示になるのではと思ってしまいます。

右辺のAの意味を教えてくださる方がいらっしゃいましたら
是非、お教えいただけます様
よろしくお願い申し上げます。

<問題>
次のマクロを実行したとき、メッセージボックスに表示される変数Aの値
Sub Sample()
Dim i As Long, A As String
For i = 1 To 3
A = A & "-" & "Excel"
Next i
MsgBox A
End Sub

<回答>
-Excel-Excel-Excel

0

2Answer

正しくは、次のコードだと思います。(⭐️行を追加)

Sub Sample()
    Dim i As Long, A As String
    A = "" '⭐️
    For i = 1 To 3
        A = A & "-" & "Excel"
    Next i
    MsgBox A
End Sub

4行目の A = A & "-" & "Excel"の
右辺のAの意味がわかりません。
これがなくても "-" & "Excel" だけで
-Excel-Excel-Excel
という表示になるのではと思ってしまいます。

なりません。
右辺にAがなければ、何回ループさせても-Excelしかなりませんね。


右辺にAがあれば、

ループ回数 <A = A & "-" & "Excel">前
のAの値
<A = A & "-" & "Excel">後
のAの値
1 "" "-Excel"
2 "-Excel" "-Excel-Excel"
3 "-Excel-Excel" "-Excel-Excel-Excel"
2Like

Comments

  1. @qii-yah

    Questioner

    @nak435さま
    おはようございます。
    今回も迅速に、そして、わかりやすくご説明いただきありがとうございます。
    特に表形式の箇所がとてもわかり易く、合点がいきました!
    急ぎの実装が一旦終了しましたので、
    基礎から学び直そうと思い、Odyssey発行のベーシック・公式テストを解いています。
    また、質問が発生した際は投稿させていただきますので
    今後とも何卒よろしくお願い申し上げます。

右辺のAの意味がわかりません。

プログラムの基本的な特徴です。
例えば、
A=A+1
これは、

  • (右辺の)Aに、
  • +1をして、
  • (左辺の)Aに代入する

という意味になります。
ループすると、直前のAに、+1され、またAに代入する、という処理が繰り返され、Aがループごとに1ずつ増えていく、という動きになります。

問題提起された例題では、
Aに、-Excel をつなげて、Aに代入する、を繰り返しているので、
次は、A(-Excel)に-Excel をつなげて、Aに代入する、(-Excel-Excel)
となります。

0Like

Comments

  1. プログラムによっては、右辺にAがなくても-Excel-Excelとできる場合もあります。
    A += 1
    これは、A=A+1と同意となる言語もあります。
    A++もあるかな?

    VBAはそのような記述は無理で、基本のA=A+1だったと思います。

  2. @qii-yah

    Questioner

    @calcMCalcm さま

    この度は迅速なアドバイス誠にありがとうございます。
    具体例を示していただけましたので
    とてもわかりやすかったです。
    お陰様で次の問題にとりかかれます。
    今後ともよろしくお願い申し上げます。

Your answer might help someone💌