2017-06-21 13 views
1

私は、次のコードを実行したときに、私は、実行時エラーを取得しています:私は投げるSet ChngList = Track.Range("TrackTbl[Org ID]")に到達するまでファイル名を指定して実行時エラー:1004アプリケーション定義またはオブジェクト定義のエラー

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationAutomatic 
Application.DisplayStatusBar = False 
Application.EnableEvents = False 

Dim c, OrgList, vtList, FndRng As Range 
Dim Tbl As ListObject 
Dim NewRow As ListRow 
Dim Org, Track As Worksheet 

Set Org = ActiveWorkbook.Worksheets("Org List") 
Set Track = ActiveWorkbook.Worksheets("Visit Tracking Sheet") 
Set Tbl = Track.ListObjects("TrackTbl") 
Set OrgList = Org.Range(Cells(2, 1), Cells(Org.UsedRange.Rows.Count, 1)) 
Set vtList = Track.Range("TrackTbl[Org ID]") 

すべてが正常に動作Run-time Error: 1004

  • Set vtList = Tbl.Range(Cells(2, 1), Cells(ListRows.Count, 1))
  • Set vtList = Track.Range(Cells(2, 1), Cells(Track.UsedRange.Rows.Count, 1))
  • Set vtList = Track.Tbl.Range(Cells(2, 1), Cells(ListRows.Count, 1))
  • Set vtList = Tbl.Range

私はこの上で途方に暮れてよ:私も同じエラーがスローすべてが、次の代替の行を、試してみましたこの問題の解決策を見つけるのは困難でした。私はそれがテーブル内の範囲参照セルを設定することに問題があると思うが、わからない。

+0

残りのコードはどこにありますか?私はあなたが 'ChngList'を定義するところを見ません。 – dwirony

+1

[this](https://stackoverflow.com/questions/36368220/is-the-in-range-necessary-when-defined-by-cells)が答えたかどうか確認してくださいあなたの質問 –

+0

@dwirony申し訳ありませんが、私は投稿したコードの最後の行に示されているように 'Set vtList'と言うことになっています。 –

答えて

1

Siddharth Routのおかげで私はこの方向の正しい方向を指しています。

答えには私が気づいていなかった2つの問題があります。最初のエラーは、実際にはSet vtList行の代わりにSet OrgList行にエラーが発生していたことです。エラーは、With行なしの正しいシートを参照したにもかかわらず、その行のすべてのポイントでそのシートを参照する必要があるために発生していました。修正されたコードは以下の通りです:

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationAutomatic 
Application.DisplayStatusBar = False 
Application.EnableEvents = False 

Dim c, OrgList, vtList, FndRng As Range 
Dim Tbl As ListObject 
Dim NewRow As ListRow 
Dim Org, Track As Worksheet 

Set Org = ActiveWorkbook.Worksheets("Org List") 
Set Track = ActiveWorkbook.Worksheets("Visit Tracking Sheet") 
Set Tbl = Track.ListObjects("TrackTbl") 
Set OrgList = Org.Range(Org.Cells(2, 1), Org.Cells(Org.UsedRange.Rows.Count, 1)) 
Set vtList = Track.Range("TrackTbl[Org ID]") 

私はラインの各Range.Cells用シートを参照する必要性を排除するためにWithを使用することもできましたが、それはコードの同じ量であったであろうと、シート名がありますショート。いずれの方法でも、この問題に遭遇している人にとってはうまくいくはずです。

関連する問題