IF文でiとjの足す処理が括弧にくくられているので、きちんと足される思ったのですがラベルでの実行結果が0になります。
コード上は計算されているように見えるのですがなぜ計算されていないのでしょうか?計算できないとしたらIF文の中では計算処理ができないということでしょうか?
回答のほどよろしくお願い致します。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i, j
i = 0
j = 0
If (i = i + 1) = 0 Or (j = j + 1) = 0 Then
MessageBox.Show("+1")
End If
Label1.Text = i
Label2.Text = j
End Sub
No.3ベストアンサー
- 回答日時:
VBでは、条件式のところで代入はできませんし
代入式をCの様に式として使用できません
>If (i = i + 1) = 0 Or (j = j + 1) = 0 Then
の部分は、
まずカッコの中が評価されて
(i = i + 1)
iはi+1と等しいか?<等しくないので0になる
(j = j + 1)
jはj+1と等しいか?<等しくないので0になる
それで、
if 0=0 or 0=0 then
の意味になります。
0=0は成り立つのでifの中が実行されることになりますがiやjの値は更新はされません。
BASICでは、代入文は
SET I=I+1
のように書く必要があります。
I=I+1
と書けるのは、SETが省略できるからです。
このように代入文は、独立していなければなりません。
なので、IFなどの条件式のなかで代入式は記述できません。
分かりやすい回答ありがとうございます。
i = i + 1のような代入文が比較式として扱われているとは思いもよりませんでした。
とりあえずIFなどの条件式では代入文は使用できないことを覚えておきます。
No.2
- 回答日時:
あ、すいません。
手元に.NETがないので確認しないまま書いてしまいました。Cと混同していました。文法エラーなら、計算処理と代入処理を分けて下さい。IF文の中はあくまで比較のみ、という事です。
※リンク貼りなおしておきます
参考URL:http://www.microsoft.com/japan/msdn/net/vbnetref …
回答ありがとうございます。
Cと混合していたということで了承致しました。
とりあえず、IF文のなかでは比較式でないと駄目だという事を覚えておきます。
No.1
- 回答日時:
参考URLをみてください。
(i = i + 1) = 0でいうと、=は比較条件式と判断され、iとi+1が比較された結果(この場合false)と0が比較されていますので、iには結果として何も代入されていません。お望みの場合は+=の「代入を伴う演算子」を使ってください。
参考URL:http://www.microsoft.com/japan/msdn/library/defa …
この回答への補足
回答ありがとうございます。
代入を伴う演算子を使用しましたが、エラーが出て実行できません。なぜでしょうか?
回答のほどよろしくお願い致します。
If i += 1 = 0 Or j += 1 = 0 Then ←文法エラー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
[VBS]変数を定数に変換する方法...
-
EXCEL/VBA 変数の値をクリップ...
-
C言語 列挙型(enum型)変数について
-
jsp~jspにhiddenを使って変数...
-
整数xxxが大き過ぎますというエ...
-
i++と++i ってどう違うのですか?
-
datagridviewに行...
-
Excel VBAでイコール二回使えま...
-
サブwindowをオープンして外部...
-
VBA 1行で複数の代入を行った...
-
テキストファイルの値をバッチ...
-
C言語 アロー演算子について質...
-
Variant型で宣言してるのにEmpt...
-
Serialize(CArchive& ar)にて
-
VB6.0での条件文にある#の意味
-
VBAでコマンドプロンプトの結果...
-
processing エラーで、 "cannot...
-
インクリメント演算子の前置(+...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
EXCEL/VBA 変数の値をクリップ...
-
整数xxxが大き過ぎますというエ...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
python の 連鎖代入の文法
-
i++と++i ってどう違うのですか?
-
プログラミングで変数と関数の...
-
C言語 アロー演算子について質...
-
「%」を使って、偶数か奇数かを...
-
JavaScriptをURLから直接実行し...
-
VBA 1行で複数の代入を行った...
-
ExcelのVBAでをA列に第0〜19項...
-
無名関数のメリットがよくわか...
-
コマンドプロンプト バッチ|結...
おすすめ情報