2017-06-16 17 views
0

私のスクリプトの初期段階では、常に新しいセルを追加しているので、動的に列のセルの範囲を取得したいという問題に遭遇しました。私は列の名前で範囲を取得してみましたが、 "実行時エラー '1004':アプリケーション定義またはオブジェクト定義エラー"というエラーが表示されます。私は間違った列名で範囲を理解しているかもしれません、なぜ誰が私はこのエラーが表示されます知っている?ここでVBセル名で範囲を取得

は、これまでの私のコードです:私はコラム、「サブシステム」の内容と第二を取得しようとしていますどこの最初の行を示し

Sub autoFill() 
Sheets("Unit #2").Range("SUBSYSTEM").Copy Destination:=Sheets("Test").Range("A1") 

Sheets("Unit #2").Range("B2:B38").Copy Destination:=Sheets("Test").Range("B1") 

End Sub 

は、私は固定でそれを行う方法を示し範囲は、動作します。

+0

名前付き範囲を使用して列全体を指定しましたか、列ヘッダーだけを「SUBSYSTEM」ですか? – JNevill

+0

@JNevillそれはちょうど列ヘッダーです – kdean693

答えて

1

ユニット2のワークシートに移動し、列ヘッダーラベルセルをSUBSYSTEMで選択します。

[式]、[定義済みの名前]、[名前マネージャ]コマンドを選択します。開いたら、「新規」を選択します。

SUBSYSTEMを名前として使用してください。ワークブックのスコープとしてそのまま残しておき、参照先には次を使用します。

'for text values in the SUBSYSTEM column 
='Unit #2'!$Z$1:INDEX('Unit #2'!$Z:$Z, MATCH("zzz", 'Unit #2'!$Z:$Z)) 
'for number values in the SUBSYSTEM column 
='Unit #2'!$Z$1:INDEX('Unit #2'!$Z:$Z, MATCH(1e99, 'Unit #2'!$Z:$Z)) 

[OK]をクリックします。今すぐあなたのコードが動作するはずです。

enter image description here

あなたはZ(5ヶ所)の代わりに、実際のサブシステム列文字識別子を代用する必要があります注意してください。

+0

ここに「=」印がありますが、これをオブジェクトと同じに設定していますか? – kdean693

+0

**動的名前付き範囲**を、列の最初のセルからその列の最後の値(テキストまたは数値のいずれか)まで定義しています。名前を定義したら、GoTo(F5)を使って* SUBSYSTEM *に移動してテストし、値の列を選択します。 – Jeeped

+0

ありがとう、完璧な作品です。 – kdean693

関連する問題