• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数が勝手に変わります)

変数が勝手に変わる理由を教えてください。

このQ&Aのポイント
  • プログラム内で利用されている変数rowNumberの値が変化する理由を教えてください。
  • プログラムの実行結果として、ウィンドウに表示される変数rowNumberの値が変わってしまう理由を教えてください。
  • プログラム内の処理によって、変数rowNumberの値が変動する理由を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

補足しますと、rowNumber は 元々 i を「参照渡し」してますので、i の変化に合わせて変化してます。 i = 1 で getTesuSum1 に渡され、MsgBox 1 更に copy に渡され i = 5 まで実行され、i = 6 で For を抜けて copy から戻った時に MsgBox 6 更に 次の For で i = 4 になり、MsgBox 4 次に For 内でインクリメントされて MsgBox 5 次に For 内でインクリメントされて MsgBox 6 そして card2(5) に 6 は入らずオーバーフロー 引数の規定は参照渡し(ByRef)なので 値渡し(ByVal) にするのも手です。 Sub getTesuSum1(ByVal rowNumber As Integer, tesu1 As Integer, sum1 As Integer) いずれにしても、同じ変数を ローカル以外で宣言して使うのは必要範囲に留めましょう。

ab5
質問者

お礼

なるほど。rowNumberの値がiと等しいようになっているから、このようなことがおこるのですね。これで、わかりました。どうもありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

Sub addTesuSum は、どのようなコードなのでしょうか? >MsgBox rowNumber は、Debug.Print か、ウォッチ式の変わりですか? それ自体に、意味があるとは思えませんが。

ab5
質問者

補足

このプログラムはポーカーゲームのプログラムを作っていて、うまくいかないところがあったので、そのままそのプログラムを書き込もうとすると800字以上で書き込めなかったために、質問に必要なところ以外を削除したものですが、いらないところが残っていたようです。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

VBは解りませんが、、、 Dim i As Integer を Sub getExpectPoint1card(expectPoint1card() As Integer) Sub getTesuSum1(rowNumber As Integer, tesu1 As Integer, sum1 As Integer) Sub copy(row() As Integer, row2() As Integer, i2 As Integer) などでバラバラに使うなら、Sub 内で宣言しないとダメなのでは?

関連するQ&A