以下のコードを実行すると、メッセージBOXに OKOKOK
となります。
【A = A & "O" & "K"】が3回繰り返されると、OKOKOKになるのが分かりません。
A = A & "O" & "K"も、A=Aなる分かりますが、左と右が違うのが分かりません
A = A & "O" & "K"が、3回繰り返されるのは分かります
ご存じの方、教えて下さい
【コード】
Sub OK()
Dim i As Long, x As String
For i = 1 To 3
A = A & "O" & "K"
Next i
MsgBox A
End Sub
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
もしかして、
A=1
A=A+1
をみて、「A=A+1と書いてあるが、左辺は1で、右辺は2なので等しくない」とか思うのでしょうか?
多くのプログラミング言語で、= は「等しい」という意味は無いです。「右辺の値を左辺に代入する」という意味です。
& が文字列を繋げる演算子であるというのは分かりますかね?
A = A & "O" & "K"
は、「A & "O" & "K"」 の値を変数Aに代入するという意味です。
多くのプログラミング言語では、「等しい」かどうかをチェックする演算子は「==」です。例えば「 1 == 2 」は偽で、「 1 == 1 」は真です。
ところが、VB系は「=」が文脈によって「等しい」と「右辺の値を左辺に代入する」の両方の意味に自動的に切り替わるので、初心者にわかりにくいところです。
「式」を書くところだと「等しい」という意味で、「文」を書くところだと「右辺の値を左辺に代入する」という意味です。
No.4
- 回答日時:
私も、kanta2006さんと同様の感想を持ちました。
VBAの数式に登場する「=」は「左向き矢印」という風に捉えた方がイメージが掴み易いと思います。
つまり、以下のようになります。
一回目 i←1 のとき A←A&"O"&"K"を実行すると
最初(Dimで宣言しただけの状態※)、Aは空。従ってA←"O"&"K"となるので、Aは"OK"となる
二回目 i←2 のとき A←A&"O"&"K"を実行すると
Aにはすでに"OK"が入っている。従ってA←"OK"&"O"&"K"となるので、Aは"OKOK"となる
三回目 i←3 のとき A←A&"O"&"K"を実行すると
Aにはすでに"OKOK"が入っている。従ってA←"OKOK"&"O"&"K"となるので、Aは"OKOKOK"となる
※余計なお世話ですが、ご質問者が投稿されたコードの宣言文
Dim i As Long, x As String
は
Dim i As Long, A As String
の誤りだと思います。
No.3
- 回答日時:
さっきの回答に補足説明
数学的には
A = A+10
なんて計算は成立しませんよね。
でもプログラミング言語では、普通に成立する式なんです。
右の式で演算した結果を左の変数に代入するので、Aに10を足した結果をAに入れることになるので、元のAの値が20だったら、それが30になります。
No.2
- 回答日時:
for next ステートメントが分からないと言うよりも、=(イコール)演算子の意味で躓いておられるのではないかと感じました。
VBA(マクロ)に限らず、プログラミング言語における、=は、数学的=とは全く意味が違う事に気をつけなければいけません。
「=」(イコールが1つ)は値の代入を意味する演算子です。
右の式で計算した結果を、左の変数に入れます。
ですから、最初はAの中身が空だとして
A = A & "O" & "K"
を1回目に実行すると「A & "O" & "K"」の計算結果をAに代入します。
VBAでは&は文字列を連結する演算子ですから、ここでAに代入されるのは「OK」です。
この式をもう一度実行すると、先ほどのOKにさらにOとKが連結された結果を、またAに代入してOKOKになります。
3回目に実行すると、先ほどのOKOKにさらにOとKが連結された結果をAに代入するのでOKOKOKになります。
プログラミング言語を扱う場合、数学的なイコールと全く意味が違う事に慣れるまで戸惑うかもしれませんが、慣れれば気にならなくなると思います。
No.1
- 回答日時:
Sub OK()
Dim i As Long, A As String
For i = 1 To 3
A = A & "OK"
Next
MsgBox A
End Sub
と書くと判り易いような気がします。
Aを文字列型の変数と宣言したので、文字列はダブルクォーテーション””で囲まなければなりません。
A=”OK”かA=”O”&”K”です。&には、文字列を繋げる意味があります。
For i = 1 To 3
A=”O”&”K”
A=A
Next
とすると、何回繰り返してもOKだけです。
式を、A = A & ”O”&”K”
にすると、最初のAは、ダブルクォーテーションで挟まれた文字だけですので、OKとなります。
2回目のループでは、式の右側のAに、最初のA = A & ”O”&”K”の文字列OKが代入されます。OKOKとなります。
3回目のループでは、式の右側のAに、2回目の文字列OKOKが代入されます。OKOKOKとなります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- SQL Server VBA 3重ループ 独学勉強中 1 2022/02/01 21:53
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 条件をつけてカウントする 4 2021/12/19 20:27
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 読み込みで一行おきに配列に格納 1 2021/12/27 20:56
- Word(ワード) wordでの指定オブジェクトの削除 6 2021/12/20 00:06
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルの関数でわからないことあるのでコード付きで教えてください
Excel(エクセル)
-
エクセルで⑤番の操作が分かりません。どういう関数が良いんですか?
Excel(エクセル)
-
DBCS関数とは何ぞやッ!
Excel(エクセル)
-
-
4
エクセルで相対パスの書き方を教えてください
Excel(エクセル)
-
5
VBA(えくせる)ってなんでメンテできない人が多いんですか?
Excel(エクセル)
-
6
データから単位文字を除去して計算する方法は?
Excel(エクセル)
-
7
【マクロ】転記ツール。転記先にデータがある場合、上書きするか消すか質問をして欲しい
Excel(エクセル)
-
8
エクセルのハイパーリンクで質問です。
Excel(エクセル)
-
9
エクセルの行を巾を変えずに増やす方法
Excel(エクセル)
-
10
エクセルのcountifのワイルドカードについて
Excel(エクセル)
-
11
“丸(〇/○/◯)”に似た文字…
Excel(エクセル)
-
12
同じ型【ハイフンと数字】をぶつけて、イコールである事を証明する関数はありますか?
Excel(エクセル)
-
13
Googleシート「A1」でなくて「A001」にしたいのですが
Excel(エクセル)
-
14
エクセルの数式で教えてください。
Excel(エクセル)
-
15
0.001ずつずらしたいのですが実際の値は 1.552のところは1.5519999999 のようにな
Excel(エクセル)
-
16
Excelのマクロファイルを開くと下記のエラーがでます。
Excel(エクセル)
-
17
同じ型【ハイフンと数字】だけ抜き出す関数について
Excel(エクセル)
-
18
マクロのコードについて解説をお願いします
Excel(エクセル)
-
19
[条件付き書式]について、
Excel(エクセル)
-
20
関数を教えていただきたいです。 添付のような「data sheet」があります。 他に、「集計 sh
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ダブルクリックするたびに...
-
JANコード、ITFコードの作成
-
ギターのTAB譜の記号 N.C....
-
JAN コードとITFコードの違い...
-
マイナーの裏コードは存在する?
-
マイクロソフト 一時使用コード...
-
ピアノとギターのコードって
-
先日、電気コードに熱いお湯か...
-
ピアノで押さえる場合の分数コ...
-
こたつのコードについて
-
[VBA]ファイル名の末尾にA~Zを...
-
excelマクロ フォームのインポート
-
[やさしさとして想い出として ...
-
ギターコードについて
-
VBAのフォーム上にTextBoxたく...
-
実行時エラー3251対応処理方法
-
おしえてください!
-
所有しているコードブックに、...
-
【HULFT】 utllist とutladmin
-
巾着などの紐を絞る部品の名前
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ギターのTAB譜の記号 N.C....
-
VBA ダブルクリックするたびに...
-
マイクロソフト 一時使用コード...
-
パソコンから出てる有線コード...
-
JAN コードとITFコードの違い...
-
Gmailを開いた状態でもうひとつ...
-
片側がUSBで片側がイヤホンジャ...
-
ドライアーのコードから煙が出...
-
JANコード、ITFコードの作成
-
マイナーの裏コードは存在する?
-
◎PPMのコードをお教えいただ...
-
DLookupがうまく出来ません
-
草刈の際に電源ケーブルを切断...
-
JISコードがわからない
-
『車の中でかくれてキスをしよ...
-
コードを白く塗りたい
-
【EXCEL-VBA】PDFファイルを開...
-
【マクロ】PasteSpecialメソッ...
-
CODE関数から他の文字コードの...
-
サイトによってコード譜が違う...
おすすめ情報