2016-12-31 3 views
-1

以下のコードは、オブジェクト '_worksheet'の 'Range'にエラーが発生しました。そのため、あるシートから別のシートにユニークIDをコピーすることはできません。私はrangeは既に充填されていると信じて一枚のシートから別のシートに一意のIDをコピーすることはできません。オブジェクト '_workheet'オブジェクトの 'Range'がエラーに失敗しました

Private Sub PopulateUniqueIds() 
Dim ws1 As Worksheet 
Dim ws2 As Worksheet 

Set ws1 = ThisWorkbook.Sheets("Sheet1") 
Set ws2 = ThisWorkbook.Sheets("Sheet2") 
lastrows2 = GetLastRow(ws2) 

ws2.Range("C4:C" & CStr(lastrows2)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws1.Range("B9"), Unique:=True 
End Sub 

WS2とWS1は、二つの異なるワークシート

のワークシートオブジェクトであり、私はこの行に

ws2.Range("C4:C" & CStr(lastrows2)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws1.Range("B9"), Unique:=True 
+2

[よくある質問のしくみ](http://stackoverflow.com/help/how-to-ask)の情報は、ヘルプページを参照してください。また、[最小値を作成する方法、Complete、Verifiable example](http://stackoverflow.com/help/mcve) –

+0

あなたの 'GetLastRow' Sub(またはFunction)はどこですか? 'lastrows2'はどこで定義しますか?また、 'CStr(lastrows2)'は 'CLng(lastrows2)'でなければなりません。 –

+0

私はlastrow番号を長文として渡しているGetLastRowを持っていて、それをStringに変換してconcatinatingします。 – user7360443

答えて

1

をエラーを取得しています値が

となるので、それをクリアするのがベストです:

ws1.Range("B9").ClearContents 
ws2.Range("C4:C" & CStr(lastrows2)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws1.Range("B9"), Unique:=True 
+0

いいえ!それは動作していない、同じエラー – user7360443

+0

あなたのコードをステップし、何が起こっているかを見るためにイミディエイトウィンドウで関連する変数をクエリします。たとえば、?ws2.Range( "C4:C"&CStr(lastrows2))。アドレス、ws1.Range( "B9")。Address'を入力し、返信 – user3598756

+0

@ user7360443を押してください。 – user3598756

関連する問題