ずっとC、C++で開発を行っていたのですが、
VBでの開発を最近はじめたものです。
C/C++では以下の記述でループ内でループの先頭に
処理を戻すことが出来ます。
int i ;
int a[10] ;
int b[10] ;
for( i=0; i<10; i++ )
{
if( a[i]==0 )
{
continue ; // aが0の場合は iをカウントアップしてfor文の最初から処理を行う
}
if( b[i]==0 )
{
continue ; // aが0の場合は iをカウントアップしてfor文の最初から処理を行う
}
// 主処理
:
:
:
}
こういった事をVBで同じように行う記述方法というのは存在するのでしょうか?
現状は以下の様に記述していますが、主処理を行う前のチェック内容の数が増えた場合、
インデントが深くなってしまいます。
Dim intA As Integer
Dim intDataA(10) As Integer
Dim intDataB(10) As Integer
For intA = 1 To 10 Step 1
If intDataA(intA) <> 0 Then
If intDataB(intA) <> 0 Then
'主処理
:
:
:
End If
End If
Next
個人的にはインデントの深いプログラムは見づらいと思っているので
良い案があれば知りたいと思っています。
無ければ無いで仕方ないのですが。
以上、よろしくお願いいたします。
んさん、こんにちは。
これではダメですか?
Dim intA As Integer
Dim intDataA(10) As Integer
Dim intDataB(10) As Integer
For intA = 1 To 10
If intDataA(intA) <> 0 And intDataB(intA) <> 0 Then
'主処理
End If
Next
ちなみにStep 1は省略できますよ。(^_^)
少し邪道だけど・・・
Dim intA As Integer
Dim intDataA(10) As Integer
Dim intDataB(10) As Integer
For intA = 1 To 10
Do
If intDataA(intA) = 0 Then
Exit Do
End If
If intDataB(intA) = 0 Then
Exit Do
End If
'主処理
While False
Next
continueっぽく使えます。
Mika 様、t2 様回答ありがとうございます。
<Mika 様回答より>
> For intA = 1 To 10
> If intDataA(intA) <> 0 And intDataB(intA) <> 0 Then
> '主処理
> End If
> Next
<t2 様回答より>
> For intA = 1 To 10
> Do
> If intDataA(intA) = 0 Then
> Exit Do
> End If
> If intDataB(intA) = 0 Then
> Exit Do
> End If
>
> '主処理
> While False
> Next
If 文に複数設定できるんですね。
VB初心者なもので、そこまで頭がまわりませんでした。
ただ、条件が多くなった場合や条件の増減があった場合に
動作確認済みの処理(If文)に手を入れなければならないので
t2 様に教えていただいた手法を使用させていただきたいと思います。
>ちなみにStep 1は省略できますよ。(^_^)
何となく全ての For 文に記述していました。
> 少し邪道だけど・・・
邪道大好きです。