2017-02-17 16 views
-1

行に空でないセルがある場合に特定のタスクを実行するプログラムがあります。下のコード私は各空でないセルを確認するために使用していますが、最後の空でないセルに遭遇した後に問題が発生します。最後の値はA1048576と私のExcelがハングアップします。は、値が行の最後に到達したときにマクロを終了する必要があります

Reg_SCN_001

Reg_SCN_002

Reg_SCN_003

If VBA.IsEmpty(startCell.Value) Then 
     'MsgBox "No data in this column" 
Else 
     Set firstNonEmptyCell = startCell.End(xlDown) 
     'MsgBox "First non empty cell is " & firstNonEmptyCell.Address 
     county = firstNonEmptyCell.Offset(0, 0).Address(False, False) 
     county = Right(county, Len(county) - 1) 
     countsteps1 = county - 1 
End If 

上記のコード私は私のプログラムで使用する各非空のセルのセルアドレスを与えます。例Reg001 @ $ A $ 2、Reg001 @ $ A $ 16、Reg002 @ $ A $ 33などです。 最後の空でないセルに達した後に何が起こるのですか?Reg015 @ $ A $ 233 上記のコードの実行時間が長くなり、行のセルの値が$ A $ 1048576になり、最後の空でないセルであるReg015 @ $ A $ 233で停止します。

これが役に立ちます。

+1

あなたはこれをトラブルシューティングするのに十分なコードを提供していませんでした。誤ってコーディングされたループなど、サブ/ファンクション内の何かに問題がある可能性があります。 @ Zerkが述べたように – Zerk

+0

、あなたの質問は不明です。しかし、一般的に言えば、あなたが言ったように "マクロを終了"したいなら、あなたは 'Exit Sub'を使うことができます。 –

+0

もう少し説明しましょう。 –

答えて

0

"If ... End If"が "For ... Next"ループにある場合は、 "Exit For"を終了することができます。

例:

If VBA.IsEmpty(startCell.Value) Then 
     'MsgBox "No data in this column" 
     Exit For 
Else 
.... 

ループ、そしてあなたが「終了ドゥ」で終了することができます「...一方ですか」であるあなたの「場合...場合は、終了」した場合。

しかし、あなたは全体のサブを終了したい場合は、「終了サブ」を使用。

関連する問題