以下のコードを実行すると、メッセージ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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
エクセルで⑤番の操作が分かりません。どういう関数が良いんですか?
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
0.001ずつずらしたいのですが実際の値は 1.552のところは1.5519999999 のようにな
Excel(エクセル)
-
15
Excelのマクロファイルを開くと下記のエラーがでます。
Excel(エクセル)
-
16
同じ型【ハイフンと数字】だけ抜き出す関数について
Excel(エクセル)
-
17
“丸(〇/○/◯)”に似た文字…
Excel(エクセル)
-
18
エクセルおいて,論理式の関数を使う場合は,空白のセルは,数字では0と扱われますか?
Excel(エクセル)
-
19
「ChatGPT-3.5」の回答ですが
Excel(エクセル)
-
20
こんにちは。Excelのデータ入力規則のことで教えてください。複数条件を指定したい場合の構文ですが、
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ダブルクリックするたびに...
-
JAN コードとITFコードの違い...
-
マイクロソフト 一時使用コード...
-
片側がUSBで片側がイヤホンジャ...
-
耳コピ
-
ギターのTAB譜の記号 N.C....
-
電気コードだけ買うことって可...
-
dim7コードはシックスなのにな...
-
エクセルのヘッダの日付は、書...
-
Accessに対するGrep検索
-
徹子の部屋のテーマ曲を演奏し...
-
Gmailを開いた状態でもうひとつ...
-
ギターのコード?見ただけでど...
-
JOBコードってなんでしょうか?
-
コード
-
束ねられて売られている電源コ...
-
JANコード、ITFコードの作成
-
ベース 初心者 バンド キー
-
リアルガチでコード無双ボイト...
-
オーシャンゼリゼのギターコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイクロソフト 一時使用コード...
-
ギターのTAB譜の記号 N.C....
-
VBA ダブルクリックするたびに...
-
パソコンから出てる有線コード...
-
マイクロソフト OFFICEが 安い...
-
pinコード
-
JAN コードとITFコードの違い...
-
ドライアーのコードから煙が出...
-
JANコード、ITFコードの作成
-
こんにちは。 私の車はデイズル...
-
CODE関数から他の文字コードの...
-
開封した延長コードが型着いて...
-
DAZNのギフトコードについて教...
-
コードを白く塗りたい
-
ギターで2弦2フレットと3弦2フ...
-
【マクロ】文字を1文字づつ、...
-
『車の中でかくれてキスをしよ...
-
電源コードをござの下にくぐら...
-
マイナーの裏コードは存在する?
-
オーシャンゼリゼのギターコー...
おすすめ情報