たびたびお世話になります。
前回Findメソッドについて質問をさせていただきましたが今回はその拡張版です。
やりたいこと
Excel2016の使用するファイルはExcelファイルを2つの1つにはSheet1とSheetシート2があり、もう一つのファイルはSheet1のみです。
これらを用いて
①Sheet2の1列目に別のワークシートのF列にある番号をコピペします。
②Sheet2の1列目に張り付けられた番号をSheet1の1列目からFindメソッドにて探し出します。
③番号の一致したセルの1列目から8列目までの値を参照させます。
④同様の作業を10行目間まで繰り返します。
以上のことを行いたいです。
問題が出るのはFor内のFindメソッドでオブジェクトエラーが起こってしまいます。
かなり雑なコードですがよろしくお願いします。
ExcelVBA
1Sub Test() 2Call main //標準モジュール内でSheet1をWs1、同様にWs2と定義し、それを呼び出す。 3//①コピぺのコード 4On Error Goto myError 5 Windows("ExCExcelOut.csv").Activate 6 Range("F1:F10").Select 7 Selection.Copy 8 Window("Test.xlsm").Activate 9 Ws2.Range("A1").Select 10 Selection.PasteSpecial Paste:=xlPasteFormulas 11 12myError: 13//もしコピペするものがない場合は途中で止める 14If Ws2.Range("A2").Value = "" Then 15 Exit Sub 16End If 17 18//ここからが問題のFindメソッドとForの合わせ技です。 19Dim myrng As Range 20 Set myrnge = Ws1.Range("A:A") 21Dim i As Long 22For i = 1 to 10 23 //問題の箇所↓ 24 If Not myrng.Find(Ws2.Cells(i,1).Value,LookAt := xlPart) Is Nothing Then 25 Dim j As Long 26 For j = 1 to 8 27 Ws2.Cells(i,j).Value = Ws1.Cells(myrnd.Find(Ws2.Cells(i,j).Value, LookAt 28 := xlPart).Row,j).Value 29 Next j 30 End If 31Next i 32 33End Sub() 34 35
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。