![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以下のマクロをご覧ください
-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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) VBA 1 2024/02/03 22:51
- Visual Basic(VBA) 【VBA】エクセルで最後の不要な改行コードを削除するコードについて 3 2023/09/08 18:41
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
逆元の計算方法
-
必要条件 十分条件について
-
「この2式の辺々を掛けて」とあ...
-
arctanxをf(x)とし、そのn回微...
-
整式P(x)をx²+x+1で割ると余...
-
数値代入法による恒等式の解説...
-
数列について
-
微分 極値
-
【等式 x+2y+3y=12を満たす自然...
-
代入法なのに、逆の確認をしな...
-
極限値が存在するための定数a,b...
-
量子力学の交換関係について
-
y=2x-1/x+1の逆関数を求めるも...
-
一次不定方程式の整数解のうち...
-
急ぎ目でお願いしますm(_ _)m ...
-
証明です
-
複素数の2次方程式がわかりません
-
複素関数 sin(x+iy)について
-
xの整式a=ax^4bx^3+abx^2-(a+3b...
-
数学の公式に値を当てはめると...
おすすめ情報