2017-06-07 13 views
0

Excelブックにテキストをインポートするモジュールをビルドします。インポートした後、データをテーブルとしてフォーマットする必要があります。私が持っている問題は、輸入に決して同じ範囲がないということです。Excel VBA:アドレスを使用してセルを範囲に変換

私は次のコードを使用していますが、エラーが発生します。実行時エラー '424':オブジェクトが必要です。

Sub ImportRange() 

    Dim ws As Worksheet 
    Dim lRow As Long 
    Dim lCol As Long 
    Dim rng As Range 

    Set ws = ThisWorkbook.Worksheets("Import") 

    lRow = ws.UsedRange.Row - 1 + ws.UsedRange.Rows.Count 
    lCol = ws.UsedRange.Column - 1 + ws.UsedRange.Columns.Count 

    Set rng = ws.Cells(lRow, lCol).Address(True, True) 

    'MsgBox Cells(lRow, lCol).Address(True, True) 

End Sub 

私は、検索のかなりやったが、私は答えを見つけるか、私はこれを実行する方法を見つけ出すことができませんでした。

最終結果は常に$ A $ 1に設定されている範囲の開始とコードに次のようになります。

ws.ListObjects.Add(xlSrcRange, Range("$A$1:$AM$90"), , xlYes).Name = _ 
    "Import" 
+0

でXlListObjectHasHeadersを置き換えます: 'Set rng = ws.Cells(lRow、lCol)'それから 'msgbox rng.Address(1,1)'を実行することができます。 –

+0

@ScottCraner MsgBoxは自分のしていることを検証するだけでした。 Range( "$ A $ 1:RANGE")で代用できる必要があります。 –

+0

Range( "A1"、rng) ' –

答えて

0

あなたの目標は、上で使用される範囲の範囲を設定するのであればシート、それが簡単に行うことができます。

Set rng = ws.UsedRange 

は明らかに、あなたはそのシート上usedrangeが正常にインポートしたデータを表していることを確認する必要があります。テーブルの範囲を変換するには

Dim Import_Table As ListObject 
Set Import_Table = ws.ListObjects.Add(SourceType:=xlSrcRange, Source:=rng, XlListObjectHasHeaders:=xlYes) 
Import_Table.Name = "Import" 

注:コードは、それ以降のバージョンのためのExcel 2010用で、範囲を設定するときは、 `Address`を使用していないHasHeaders

+0

私にダムを感じさせ、正しい答えをくれてありがとう!完璧に動作します。残りの1日をお楽しみください! –

関連する問題