
Sub test()
Dim n As Byte, i As Byte
For i = 0 To 5
If n = 0 Then
n = n + 1
Else
Exit For '(1)ここから
End If
i = i + 1 '(2)ここへ来たい(IFステートメントだけ抜けたい)
Next i
End Sub
のように(1)から(2)へ行きたいのですが
このコードを実行すると
Forステートメントを抜けてしまい、マクロが終了してしまいます。
「Exit If」にするとエラーになってしまいます。
Exitを使用してIFステートメントだけ抜け、
Forステートメントに戻るにはどうすればいいでしょうか?
ご教授よろしくお願いします。
No.5ベストアンサー
- 回答日時:
こんにちわ。
VBAを使わないので書き方のルールがよくわからないのでエラーがでるかもしれませんが、i=i+1の場所がよくないんじゃないでしょーか?
nが0の時だけiに2を足したい。
nが0以外のときはiに1を足したい。
このようにしたいと考えているのではないでしょーか?
↓こんな感じに変えたらどうでしょう?(素人なんで変だったらごめんなさい。)
Sub test()
Dim n As Byte, i As Byte ←よくわからないのでそのまま^^;
For i = 0 To 5
If n = 0 Then
n = n + 1
i = i + 1 ←ここに入れたらどーでしょー?(elseは不要っぽい)
End If
Next i
End Sub
あとは書き方分かる方おねがいします。
No.4
- 回答日時:
>Dim n As Byte, i As Byte
バイト型のこと
http://www.sdls.jp/~barista/tech/vba/g0.html
に初心者は使わないと。
これを使えるレベルなら、本質問など、出ないだろう。
ーー
コードだけ書くのでなく、何がやりたいのか「文章で」書くべき。書かないから、回答者から推測的な回答が出ているように思う。
それにエクセルの処理に絡んだ問題を抱えているのではないか。
そうであればセルとの関連で質問を書くべき。
例
Sub test01()
Dim i, j As Integer
For i = 1 To 10
For j = 1 To 5
'MsgBox i & "-" & j & Worksheets("Sheet4").Cells(i, j)
If Worksheets("Sheet4").Cells(i, j) <> "" And Worksheets("Sheet4").Cells(i, j) = 0 Then
Worksheets("Sheet4").Cells(i, j) = 1
Exit For
End If
Next j
Next i
End Sub
ーーー
例データ A1:F5
結果元は1のところは0、-は空白セル。
1ーー0ー
ーーーーー
ーー1ーー
ーーーーー
ーー10ー
ーーーーー
最悪、Gotoステートメントも使うぐらいの融通性を持ったら。
--
>i = i + 1
Forループの中でカウンタ変数をいじくるのは、追跡をややこしくする。
ーー
Nが0ならば、Nを1にするでよいのでは。 n = n + 1なんて書かず。
ーー
nが0出なければこの処理をやめる、のだから
If n=0 then n=1
No.3
- 回答日時:
一般的にFor~Nextのなかで i を加工することはあまりしません。
それは後からわかりにくくなるからです。(例外的に強制的にFor~Nextを抜けるために i に大きな値をセットすることはありますが、VBAではExit For文があるので必要性は薄いです)
質問文を単純に書き直すと以下になりますが、正直なところ何をしたいのかよく分からないので、これで良いか自信はありません。
Sub test()
Dim n , i As Integer
For i = 0 To 5 Step 2
If n = 0 Then
n = n + 1
End If
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) vba 「Nextに対するForが見当たりません」のエラーが発生する原因 1 2022/10/21 15:46
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ワークシート内を検索 1 2022/12/19 23:46
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
while文の条件
-
while文の条件
-
エクセルVBAで Do While (1)って?
-
無限ループ対策
-
C言語のfor文の{}について
-
string から unsigned char へ
-
c言語のフローチャートについて...
-
超初心者です。HowTo本"独習C"...
-
Do whileとFor文の脱出処理につ...
-
C言語について
-
C言語の2進数変換プログラムの...
-
VBAで、35行3列の範囲を通し番...
-
Excel VBAで年度をまたぐ期間の...
-
プログラミングについての質問です
-
行列の積の求めかた
-
swith文について
-
ループの特定入力終了
-
UWSCにてある一定の動作を無限...
-
放電現象の2分法C言語プログラ...
-
PAD図の書き方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
ループを途中で抜けたいのですが。
-
C言語forループが完結した場合...
-
break文でループを一気に抜ける...
-
C言語、whileループを抜け出す...
-
入力した文字列から母音だけを...
-
プログラムで関数は使わない方...
-
For文の終了値を関数にしても問...
-
Cプログラムが終了しない
-
if文の中にfor文なのか、for文...
-
他言語で言うcontinue文
-
文字列を後ろから1文字ずつ表示...
-
if文を使わずに奇数・偶数を判断
-
整定時間
-
for文while文の無限ループの違...
-
excel VBA if文について
-
n重のfor文にするには?
-
特定の文字列が出てくるまでの...
-
VBScriptでSQLに接続し、CSV出...
おすすめ情報