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

3Answer

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

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"
3Like

Comments

  1. @qii-yah

    Questioner

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

@qii-yah
質問文の ソースの部分は ``` の行で囲うことで シンタックスハイライトやインデントを利かせることができます。その為 質問文のソースの部分は ``` で囲って頂いた方が良いと思います……。(先頭の ``` の後に vb 等入れることで どの言語のシンタックスハイライトか選択できます。今回は vb が最適なシンタックスルールなのでそれで

貴コードの場合は下記の様な書き方でシンタックスハイライト及びインデントが利くはずです。

```vb
Sub Sample()
    Dim i As Long, A As String
    For i = 1 To 3
        A = A & "-" & "Excel"
    Next i
    MsgBox A
End Sub
```
1Like

右辺の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💌