2017-12-04 38 views
1

私はVBAに新しいですし、VLOOKUP関数でセルの範囲を設定するために次のコードを使用しています:これは、動的にするためにVBAを使用してダイナミックレンジのセルにExcel式を挿入する方法は?

With wbk1.Sheets("classes") 
     .Range("AA2:AA" & .Range("C" & .Rows.Count).End(xlUp).Row).Formula = "=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'Actual vlookup 

、私は(動的参照して.Range("AA2:AA" & .Range("C" & .Rows.Count)部品を交換したいです私の場合、同じシートの最初の空の列)。

まず、私はこのワンライナーとの最初の空の列を見つける:

first_empty_column = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 

私は

With wbk1.Sheets("classes") 
    .Range(ws.Cells(1, first_empty_column) & .Range("C" & .Rows.Count).End(xlUp).Row).Formula = "=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'Actual vlookup 

を行うときしかし、私は「ランタイムエラー 『1004』を取得:アプリケーション定義しますオブジェクト定義エラー

このコンテキストでハードコードされた範囲を動的に定義する構文は何ですか?

両方 LeftTopCellRightBottomCellは任意の有効な範囲を参照して設定することができます

'PSEUDO-CODE 
.Range(LeftTopCell, RightBottomCell) 

答えて

1

は、次のRange referenceロジックを使用する必要があります。 さらに、2つの異なるシートの範囲への参照を組み合わせることはできません。単一範囲参照でwsSheets("classes")の両方を参照しています。

これを試してみてください:魔法のように

With wbk1.Sheets("classes") 

    .Range(.Cells(1, first_empty_column), _ 
      .Cells(.Range("C" & .Rows.Count).End(xlUp).Row, first_empty_column)).Formula = "=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'Actual vlookup 

End With 
+0

作品 - 多くのおかげで - あなたはshorltyあなたの答えの3行目で「_」の使用を手の込んだだろうか? – sudonym

+0

'underscore'は、長い行のコードを2行に分割するだけです。コードの可読性を向上させるためにここで使用しました –

+1

実際には 'space'の後に' underscore' – itsLex

関連する問題