2017-03-20 23 views
1

内の特定のワークシートを開く:は、私は次のコードを持っている特定のワークブック

Dim conRow As Long 
Dim targetBook As Workbooks 
Dim targetSheet As Worksheet 
Dim targetRng As Range 


targetBook = Workbooks("C:\file\path\here\filename.xlsx") 
targetSheet = Worksheets("SheetName") 
targetRng = Range("$A:$A") 

conRow = Application.Match("APersonsName", Workbooks(targetBook).Sheets(targetSheet).targetRng, 0) 

をこのコードはtargetBookが割り当てられているラインでのプロパティの不正な使用を提供します。基本的に私は与えられたワークブック内の与えられたワークシートのある範囲の人物名を検索しようとしています。後でその行に関連するさまざまな属性を検索するために使用されます。

多分私は間違った機能を使用していますか?私が使っている関数がインデックスと文字列の両方を引数として取ることができたという印象を受けました。

+1

さらに、それぞれを設定すると、その時点で親を設定します。 set targetSheet = targetBook.Worksheets( "SheetName") 'と' set targetRng = targetSheet.Range( "$ A:$ A") 'を入力し、あなたの数式では親を親としてではなく、すでに範囲変数に割り当てられています。 'conRow = Application.Match(" APersonsName "、targetRng、0)' –

+0

@ScottCraner - 故意の間違いを指摘してくれてありがとう!あなたのコメントに何も追加していないと私は私の答えを削除しました。 – SJR

+0

@SJRコメントを取って完全な答えに変えることには何も問題はありません。誰もそれで動揺してはいけません。コメントをして完全な回答をしたい場合は、無料でご利用ください。 –

答えて

1

ブックを開く必要がありますか?私はそれを開くことなく、ワークブックを参照することはできませんか?

tldr:
ません。 VBAで開かれていないブックを参照することはできません。ワークシート上で動作する式のApplication.Evaluateでさえありません。数式をワークシートに書き込んで、返された値を収集し、式をクリアする必要があります。

より

...
することはできません Set閉じたブックオブジェクトへのVAR。 varを開いているブックに設定するか、開くときに Workbooks.Openコマンドに設定する必要があります。開いていないワークブックにはvarを設定できないため、そのワークブック・オブジェクト参照を使用してワークシートまたはワークシートの範囲/セル・オブジェクトを設定することはできません。

Dim strPath As String, strSheet As String, strLookup As String, var As Variant 

Dim targetBook As Workbook '<~~ note Workbook object, not Workbooks collection 
Dim targetSheet As Worksheet, targetRng As Range 

strPath = "C:\file\path\here\filename.xlsx" 
strSheet = "SheetName" 
strLookup = "aPersonsName" 

Set targetBook = Workbooks.Open(Filename:=strPath, readonly:=true) 
Set targetSheet = targetBook.Worksheets(strSheet) 
Set targetRng = targetSheet.Range("A:A") 

var = Application.Match(strLookup, targetRng, 0) 

If Not IsError(var) Then 
    Debug.Print var 
End If 

targetBook.Close savechanges:=False 

あなたがそれを設定するときは、すでに資格targetRngの親ワークシートやワークブックを持っています。試合で資格を繰り返す必要はありません。

関連する問題