2017-12-15 24 views
0

セルの参照場所(簡単に変更できる)を取得しようとしていて、その場所をフィルタリングされた一意レコードのリストで参照しようとしていますユーザーはユーザーフォームを初期化します。オブジェクトが必要です - 424値を範囲に設定しようとしたときにエラーが発生しました

シート9(ヘルパー)セルAI2は、シート1(SA給与管理区域)のセルの絶対位置を返します。

=CELL("address",INDEX('SA Payroll Dist Sheet'!B:B,MATCH(Helpers!AH2,'SA Payroll Dist Sheet'!B:B,0))) 

、セルAJ2を使用してAI2の値の最後の桁になります:

=RIGHT(AI2,6) 

これは正しく値を返します

$ B $ 547(AI2には、以下の式が含まれていますこれは、私が望むセル参照)

私はユーザーフォームを初期化しようとするとどうなります:

エラー '424'

ランタイム:

Dim ER As Range 

    'I want 'ER' to represent the value in AJ2 

Set ER = ActiveWorkbook.Sheets(9).Range("AJ2").Value 

    'Here's where debugger highlights yellow 


Worksheets("SA Payroll Dist Sheet").Range("$B$15:ER").Select 

    ' Is this even the proper way to refer to the range I am after? 
    ' In this case, the range would be ("$B$15:$B$457") 


Selection.Copy 
Sheet9.Range("AK2").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range _ 
    ("AK2"), Unique:=True 

    ' Here's where I want the list of unique records 
    ' in Sheet1.Range("$B$15:$B$457") to appear 

デバッガは次の行をハイライト::以下の場合 オブジェクトに必要な

Set ER = ActiveWorkbook.Sheets(9).Range("AJ2").Value 

私が試した:

Set ER = Sheet9.Range("AJ2").Value 

Set ER = Worksheets("Helpers").Range("AJ2").Value 

でも同じエラーが表示されます。私はこれに対する解決策が恥ずかしがらず簡単になるだろうと思っていますが、アイディアが足りなくなりました。私は同じエラーで他の質問からの解決策を試しましたが、何も問題が解決していないようです。

+0

ようこそスタックオーバーフロー!これはExcel VBAを使用していますか?もしそうなら、そのような質問にタグを付けて、より多くの専門家があなたの質問と助けを見つけることができるでしょう。 – Eric

+0

ありがとう、エリック! Excel-VBAを使用しています。私はタグで私のポストを更新しました、提案をありがとう! – ArchNemisisPayroll

答えて

0

ERはオブジェクト(範囲)変数で、範囲を変数に割り当てます。値は変数のプロパティであるため、必要に応じてそのプロパティにアクセスします(値はデフォルトのプロパティなので、厳密に指定する必要はありませんが、そうすることをお勧めします)。範囲の値を範囲変数に割り当てることはできません。

また、ERを次の行の引用符の外に置く必要があります。

なぜ選択/コピーをしようとしているのかわからないので、選択を避けるのが一般的です。

Sub x() 

Dim ER As Range 

'I want 'ER' to represent the value in AJ2 

Set ER = ActiveWorkbook.Sheets(9).Range("AJ2") 

'Here's where debugger highlights yellow 

Worksheets("SA Payroll Dist Sheet").Range("$B$15:" & ER.Value).Select 

    ' Is this even the proper way to refer to the range I am after? 
    ' In this case, the range would be ("$B$15:$B$457") 

Selection.Copy 
Sheet9.Range("AK2").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range _ 
    ("AK2"), Unique:=True 

End Sub 
+1

ありがとうSJR。あなたのコメントと変更は完全に機能しています。私はここにそれを置くことができないので、答えとして作業コードを掲載しました。 – ArchNemisisPayroll

0

ありがとうございました、あなたのコメントと変更は、私を実用的なソリューションに導いてくれました。

私はここで私が使用して終了何だ、コメント部分のコードを投稿する方法を知りませんでした:

Dim ER As Range 
Set ER = Sheet9.Range("AJ2") 
Sheet1.Range("$B$15:" & ER.Value).AdvancedFilter Action:=xlFilterCopy, 
CopyToRange:=Range _ 
    ("AK2"), Unique:=True 

あなたが見ることができるように、私はまた、間違った範囲(「AK2」)を参照します私のフィルタラインでは、私も今修正しました( "$ B $ 15:" & ER.Value)

関連する問題