
以下のマクロをご覧ください
-Excel-Excel-Excel が答えとなります
B = B & "-" & "Excel" ←この処理を3回
実施した結果かとは思います
B & の部分が分かりません。
●B=Bなら分かりますが、B = B & "-" & "Excel"
がなぜ、イコールになるのか?
●B & の部分を削除すれば良いですが、-Excel-Excel-Excel
の結果は出ません
コードの意味が分かるかた教えて下さい
宜しくお願いします
【コード】
Sub B()
Dim i As Long, B As String
For i = 1 To 3
B = B & "-" & "Excel"
Next i
MsgBox B
End Sub
No.8
- 回答日時:
1回目のBには何も入っていない。
Bという変数を使うという宣言がされただけで、中には何もない状態です。
・・・
同様に、変数の i も空の状態から始まります。
i は、For文で
i に1を格納し中の値を3まで(1つずつ増やしながら)ループする。
と宣言しています。
※ 「2つずつ増やす」とか「3つずつ増やす」という宣言もできます。
増やす量の宣言を省略する場合「1つずつ増やす」として扱われます。
変数は、最初は何も入っていないのですね
私は、変数は、こちらで何かを定義するものかと
思っていました
↓最初は、何も入っていないという前提なのですね
Bという変数を使うという宣言がされただけで、中には何もない状態です。
No.6
- 回答日時:
(。
´・ω・)ん?1回目
Bの値は空。
B = B & "-" & "Excel"
↓
B = "" & "-" & "Excel"
↓
Bの値は ”-Excel”
2回目
Bの値は ”-Excel”。
B = B & "-" & "Excel"
↓
B = "-Excel" & "-" & "Excel"
↓
Bの値は ”-Excel-Excel”
3回目
Bの値は ”-Excel-Excel”。
B = B & "-" & "Excel"
↓
B = "-Excel-Excel" & "-" & "Excel"
↓
Bの値は ”-Excel-Excel-Excel”
・・・これで分からない場合、
CPUの内部では次の手順で演算されているので
理解するようにしてください・・・
1回目の演算の手順を示してみます。
演算はCPUのアキュムレータと呼ばれる場所に入れられて行われます。
Bの値をアキュムレータと呼ばれる演算する場所に格納する。
├─────┤
│ 空 │
├─────┤
│ 空 │
├─────┤
→ 空(値) │
┴─────┴
アキュムレータを一つ押し上げ空ける。
├─────┤
│ 空 │
├─────┤
│ 空(値) │
├──↑──┤
│ 空 │
┴─────┴
空いたアキュムレータに ”-” を入れる。
├─────┤
│ 空 │
├─────┤
│ 空(値) │
├─────┤
→ ”-” │
┴─────┴
押し上げたアキュムレータの値と、今入れた ”-” を結合する。
├─────┤
│ 空 │
├─────┤
│ 空 │
├──↓──┤
│ ”-” │
┴─────┴
アキュムレータには ”-” が入る。
├─────┤
│ 空 │
├─────┤
│ 空 │
├─────┤
│ ”-” │
┴─────┴
アキュムレータを一つ押し上げ空ける。
├─────┤
│ 空 │
├─────┤
│ ”-” │
├──↑──┤
│ 空 │
┴─────┴
空いたアキュムレータに ”Excel” を入れる。
├─────┤
│ 空 │
├─────┤
│ ”-” |
├─────┤
→ ”Excel” |
┴─────┴
押し上げたアキュムレータの値と、今入れた ”Excel” を結合する。
├─────┤
│ 空 │
├─────┤
│ 空 |
├──↓──┤
│ ”-Excel” |
┴─────┴
アキュムレータに入っている ”-Excel” をBに格納する。
├─────┤
│ 空 │
├─────┤
│ 空 |
├─────┤
← ”-Excel” |
┴─────┴
2回目は ”空(値)” ではなく ”-Excel” の値を入れるところから
3回目は ”空(値)” ではなく ”-Excel-Excel” の値を入れるところから
始まる。
お返事ありがとうございます
Bの値は空。 という決め事?が分かりません。
何か、最初、Bは空 という定義があればわかるのですが
突然、Bは空と言われた感じがします。
もちろん、銀鱗 様の解説が正当なのはわかってはいます
決め事であれば、理解はできます。
他、解説あればお願いします
No.5
- 回答日時:
●B=Bなら分かりますが、B = B & "-" & "Excel"
がなぜ、イコールになるのか?
ifがないので比較ではなく、右の結果を左へ代入です。
●B & の部分を削除すれば良いですが、-Excel-Excel-Excel
の結果は出ません
B&のBの中身を先頭に使い、&で後ろを連結してBに入れなおすです
No.3
- 回答日時:
VBA(←マクロに使う構文)では、比較演算子(=,>,<など)と代入演算子が同じなのでこうなってしまします。
ここでは代入演算子として使用していますので、
>B = B & "-" & "Excel"
は、元々あったB(の文字列)に、「-」と「 Excel」を付けたしなさい!という処理をしているのです。
最初Bの中身は空白ですから、1回目の処理で"-Excel”という文字列になり、それを3回繰り返すことにより、”-Excel-Excel-Excel”となるのです。
>●B & の部分を削除すれば良いですが、
とすると、Bに"-Excel"という文字を代入しなさい!という処理を3回行っているだけですので、結果は前述のようにはなりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「この2式の辺々を掛けて」とあ...
-
β-α=√Dになる途中の計算の意味...
-
3つの数で割るとそれぞれ違うあ...
-
数学 数列の問題
-
√(1+x)のテイラー展開のn...
-
a^2x-4-1<a^x+1-a^x-5の考え...
-
連立方程式を代入法で解くか、...
-
arctanxをf(x)とし、そのn回微...
-
数学の解説お願いします!
-
方程式2x+3y=33 を満たす自然数...
-
この問題は答えが64なんですが ...
-
逆元の計算方法
-
一次方程式!!
-
これを解いて・・・とありますが解...
-
高1数II
-
ド忘れしたんですけど、2分の1...
-
54mm×86mmは何対何ですか?
-
2.5みたいな数字を分数になおす...
-
spi 非言語教えてください
-
答えが2になる複雑な数式を探...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「この2式の辺々を掛けて」とあ...
-
逆元の計算方法
-
数列について
-
整式P(x)をx²+x+1で割ると余...
-
【等式 x+2y+3y=12を満たす自然...
-
一次不定方程式の整数解のうち...
-
5x+7y=1の整数解を全て求めよ ...
-
証明です
-
数値代入法による恒等式の解説...
-
剰余の定理の問題がわかりません
-
arctanxをf(x)とし、そのn回微...
-
xの二次関数y=x^2+2mx+3mの最小...
-
高校数学
-
画像の計算はエクセルで行うこ...
-
連立方程式が苦手です。ご助力...
-
複素関数 sin(x+iy)について
-
数学の恒等式について質問です...
-
(階差数列) このn=1を代入する...
-
関数、導関数
-
角の二等分線
おすすめ情報