2016-03-29 5 views
0

While .... Wendループを実行するたびに、私はこの一般的な考え方に基づいたスクリプトを使用します。VBAを開いた方が良いwhileループはここにありますか?

Sub Macro1 
Dim Rng as Range 
Dim i as Long 
i = 2 
While i <= 10000 
Set Rng = ("A" & i) 

If Rng = Rng.Offset(0,1) Then 
i = i + 1 
ElseIf..... 

EndIf 
Wend 
End Sub 

私の質問に関係のないスクリプトの部分については詳しく説明しませんでした。とにかく、私が求めているのは、「While i < = 10000」という行です。もちろん、これは長さが10,000行より小さい列をベースにしたタスクの大部分でうまくいきます。しかし、私はこれがよく書かれていないことを理解しています。列Aに10行または100000行が含まれているかどうかにかかわらず、すべてのワークシートに適用できるスクリプトを作成するには、この開口部を調整して反映させるにはどうすればよいですか。次のようなもの:

Dim X as long 
Set X to the number of rows in column A 
While i <= X 

この作品は次のようなものですか? ありがとうございます。

答えて

2

)がありますが、最後の行を見つけることができる方法の束がありますが、ほとんどは(エンドを利用する:

次のことができます。

LastRow = Range("A1").End(xlDown).Row 

または

LastRow = Range("B10000").End(xlUp).Row 

またはActiveSheet.Rows.Countを使用する前の回答、など。コンマの後の数字は列番号なので、

LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 3).End(xlUp).Row 

は、終了操作を行うためにC列を使用します。

P.S. "-4162"は単に "xlUp"定数の数値形式です。

1

あなたはシートの最後の行を取得する:

Dim LastRow as Long 
LastRow = Activesheet.Cells(Activesheet.Rows.Count, 1).End(-4162).Row 

-4162が別のプログラムから自動化を行う場合には使用できません定数xlUPの値です。これが何をするか

は、指定された列(.Cellsの2番目の値)の一番下に移動してCtrl+Up

を押すのと同様の値と最後の行まで移動して

を使用しています
While i <= LastRow 
+0

Cool。それをシートではなく、単一の列の最後の行に制限することは可能でしょうか? 4161はどこから来たのですか? – user1996971

関連する問題