2017-03-25 8 views
1

vbaでExcelを使用して販売ダッシュボードを実行していますが、このループで問題が発生しています。私は同じループを複数回使用していますが、時々動作しますが、時にはそれはありません。 Excelはループを維持し、ループを停止する基準を認識しません。基本ループ(一貫してコードを認識できない)

Do Until (Worksheets("aerolineas").Range("xaa3").Offset(Z, 0).Text = cmbAirlines.Text) 
    Z = Z + 1  
Loop 

ループが時々

Do 
    J = J + 1 
Loop Until (ActiveSheet.Cells(13, 1).Offset(J, 0).Value = cmbAgents) 

を動作しません、私はそれが.Value.textとしなければならないかもしれないと思うが、私は両方を試してみましたし、私が間違っているかを把握することができないもう一つの例!私が言ったように、ループがうまく動作することもあります。「オーバーフロー」

私はあなたの助けをありがとう!私は数日間これらと闘ってきました!

+1

はあなた 'Cells'または' Range'で「値」とは、式の中にあるのですか?または一定のテキスト? –

答えて

0

あなたのオーバーフローはそうあなたがしようとLongタイプのようにそれらを宣言することができます32767

の最大値に制限されIntegerタイプ、のようZJ変数のいずれかの宣言によって派生する可能性がある

それ以外、あなたはFind()メソッドを使用してループをスキップすることができます:あなたの最初のコードはなる例えば

Dim found As Range 
Set found = Worksheets("aerolineas").Range("xaa:xaa").Find(what:=cmbAirlines.Text, LookIn:=xlValues, lookat:=xlWhole) 
If Not found Is Nothing Then 
    'your code to exploit 'found' range 
    MsgBox "found vale at row: " & found.row 
End If 

と2番目のコードはなる:

Dim found As Range 
Set found = Range("A13", Cells(Rows.count, 1).End(xlUp)).Find(what:=cmbAgents.Text, LookIn:=xlValues, lookat:=xlWhole) 
If Not found Is Nothing Then 
    'your code to exploit 'found' range 
    MsgBox "found vale at row: " & found.row 
End If 
+0

@AaronSeemann、あなたはそれを通過しましたか? – user3598756

関連する問題