2017-01-13 8 views
0

ユーザーが新しいデータを追加し続けると、範囲が変更されるプログラムを作成したいと思います。私は私の範囲変数を作ることができますか?

dim rng as range 
dim erow as integer 
erow = wc.Cells(wc.Rows.Count, 3).End(xlUp).Row + 1 
set rng =activesheet.Range("c4:c24002")' you will find this thing useless. but this i only part of my program 

私の範囲を定義するために最後のセル参照を使用できます。しかし、これは不必要なプロセスを追加します。だから私は "Range(" C4:Cerow ")を試してみた。残念ながら、vbaはそのようなことを許しません。もし可能であれば、plsは私を導く。

答えて

3

"C4:Cerow"は文字列リテラルなので、VBAではここでの意味を推測できません。 "C4:C"部分を連結しての文字列表記の値をerowにする必要があります。次のコードのように

Dim erow As Long 
erow = wc.Cells(wc.Rows.Count, 3).End(xlUp).Row + 1 

Dim rng As Range 
Set rng = ActiveSheet.Range("C4:C" & erow) 
+0

'wc'シートから' rng'を外してはいけませんか? –

+0

@ Mat'sMug:おそらく、その一部だけが共有されて以来、完全なコードが何をするのか分かりません。ところで編集してくれてありがとう! –

+0

ありがとうございます。しかし、私の編集は印象に残っていませんでした。貧弱な編集はあなたに "wc"の疑いをもたらします。ここでwcはwoorksheetを表します。あなたのコードには最初のセル(C4)から最後のセル(C430)までの範囲しか含まれていませんが、これは私が推測しているものです。@ Mat's Mug –

-2

あなたのアクティブなワークシートでは、ActiveSheet.UsedRangeメソッドを使用することができます。これにより、情報を含む最も遠い列と行を含むように範囲が拡張されます。スパムを減らすためにコメントから転送

例として


Dim rng as Range 
Set rng = ActiveSheet.UsedRange 


UsedRangeを使用すると、範囲をrng.Addressで参照してコードに範囲制限を挿入することができます。一例として、



ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
は、あなたの最後の行を与えると
ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column
は、あなたの最後の列を与えるだろう。

すべては、OPがコードを必要とするかどうかによって異なります。彼らが列 "C"にヌル値を持っているが、他の列にデータがある場合は、単純にxlUpを実行することはできません。使用範囲を定義してからオフセットを使用すると、私は最良の方法であることが分かります。

+0

これはOPの質問に答えるものではなく、最終行を取得する信頼性のない方法を示唆しています。 A1からC42に移動するテーブルがあるワークブックでZ274に "Hi"と入力してから、Z274の内容を削除してください。 'UsedRange'はA1:Z274ですが、間違っています。 –

+0

しかし、OPの「変数」コンポーネントは、「ユーザーが新しいデータを追加し続けると、私の範囲は変化します」という文脈で変数「erow」を参照します。 –

+0

@ Mat'sMugセルの内容を削除すると、もはやUsedRangeの一部としてカウントされなくなります。私はちょうど列1-6と行1-100のデータでテストした後、Z274に情報を追加しました、UsedRangeはA1:Z274からです。 Z274の内容を削除し、UsedRangeをA1:F100に更新しました。 – mkinson

関連する問題