【お題】王手、そして

【知りたい事】
以下コードを事項すると、メッセージBOXに100と表示されます
私は、高橋が全部で2行分あるので、セルD2の1とD3 100を足して
変数Aには、101 が格納されていると思います

しかし、答えが100なのが、疑問です

ご存じの方、教えて下さい

【表】
   A列 B  C  D
1行 鈴木 1 1 1
2行 高橋 1 1 1
3行 高橋 100 100 100

【コード動きます】
Sub 変数について()
Dim i As Long, A As Long
For i = 1 To 3
If Cells(i, 1) = "高橋" Then
A = Cells(i, 1).Offset(0, 2)
End If
Next i
MsgBox A
End Sub

A 回答 (3件)

足し算していないという事はすでに回答されている通りです。


ですので足し算するというのは正解なんですが……。

A = Cells(i, 1).Offset(0, 2)
  ↓
A = A + Cells(i, 1).Offset(0, 2)

(´・ω・`) 本当にこれで良いのかなぁ。
質問文には、D2セルとD3セルの値を足したいような事が書かれています。
細かいようですが、

A = A + Cells(i, 1).Offset(0, 2)
              ↓
A = A + Cells(i, 1).Offset(0, 3)

のような気がするんだよね。
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます

D列の指定は、A列からみて⇒Offsetに(0, 3)でした
A = A + Cells(i, 1).Offset(0, 3)

お礼日時:2024/08/11 09:35

Aには何も足して無いよ。

足し算しないと。

A=0 ←←←追加する
For i = 1 To 3
If Cells(i, 1) = "高橋" Then
A = A + Cells(i, 1).Offset(0, 2) ←←←修正する
End If
Next i
MsgBox A
    • good
    • 0
この回答へのお礼

A=0もちゃんと定義して
Aを毎回加算する場合は、A+をつける必要がありますね

ご指導ありがとうございます

お礼日時:2024/08/11 00:02

足し算処理が書かれておらず、毎回代入だけなので、最後に代入された値が入っています。

足したいなら足しましょう。
ループ前に、
A=0
Forの中を下記に書き換え
A = A+Cells(i, 1).Offset(0, 2)
    • good
    • 0
この回答へのお礼

A+が入っていないからですね。また、その場合には、最後に
代入された値が、変数Aの数値になるんですね

ご指摘ありがとうございました

お礼日時:2024/08/11 00:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A