2016-11-23 5 views
1

2つの列である "Lookup"という名前のブックがあります。これは、検索/置換のペアとして使用されます。範囲変数を名前付き範囲に設定しようとすると、型不一致エラーが発生します。変数をワークブックレベルの範囲に設定するにはどうすればよいですか?例えばExcel vbaは、ブックレベルの名前付き範囲を可変に設定します。

Sub UpdateResults() 
Dim rngLookup As Range, rngUpdate As Range, sFrom As String, sTo As String, iLookupRowCount As Long, iRow As Long 
Set rngLookup = ActiveWorkbook.Names("Lookup") 
If rngLookup Is Nothing Then GoTo ExitSub 

Set rngUpdate = ActiveWorkbook.Names("Resource_File") 
If rngUpdate Is Nothing Then GoTo ExitSub 

iLookupRowCount = rngLookup.Rows.Count 
If iLookupRowCount < 1 Then GoTo ExitSub 

For iRow = 1 To iLookupRowCount 
    sFrom = rngLookup.Cells(iRow, 1) 
    sTo = rngLookup.Cells(iRow, 2) 
Debug.Print sFrom 
Debug.Print sTo 
Next iRow 


Exit Sub 
ExitSub: 
End Sub 

答えて

1

Set rngLookup = Range("Lookup") 
+0

ありがとう!私はそれを使うことを考えましたが、シートレベルの名前だけを参照できると思っていました。あなたがActiveworkbookのメンバーをオートリストするとき、 "Range"はありません。 – user2378895

3

あなたはRangeオブジェクトにNameオブジェクトを設定しようとしています。

使用

Set rngLookup = ActiveWorkbook.Names("Lookup").RefersToRange 

このチェック: https://msdn.microsoft.com/en-us/library/office/ff834918.aspx

+0

ありがとうございます。まだ@Limakがアプローチする理由を理解していない。範囲オブジェクトはワークブックには適用されないため、ワークブックレベルの名前付き範囲を参照するためにどのように使用できますか?私はそれがシートレベルの名前でのみ動作するように思える.... – user2378895

関連する問題