------```VBA
コード
'ファイル選択ダイアログ Dim filePath As Variant filePath = Application.GetOpenFilename( _ FileFilter:="Excelブック(*.xlsx;*.xlsm;*.xls),*.xlsx; *.xlsm; *.xls", MultiSelect:=True) Dim i As Long Dim r As Long Dim wb As Workbook Dim FoundCell As Range Dim FoundCell2 As Range Dim adrs As String Dim LastRow1 As Long Dim MyArray As Variant MyArray = Array("単価", "数量", "単位", "金額") If IsArray(filePath) Then For i = LBound(filePath) To UBound(filePath) Set wb = Workbooks.Open(filePath(i)) LastRow1 = wb.Sheets(1).Cells(Rows.Count, 2).End(xlUp).row For r = 0 To 3 Set FoundCell = wb.Sheets(1).Range("B4:X4").Find(what:=MyArray(r)) FoundCell.Select adrs = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False) wb.Sheets(1).Range(adrs).Resize(LastRow1 - 3).Copy '始点が4行目からなので-3にしている。 Set FoundCell2 = ThisWorkbook.Sheets(5).Range("B6:S6").Find(what:=MyArray(r)) FoundCell2.Select Next r ActiveCell.Offset(0, 1).PasteSpecial xlPasteValues Next i End If End Sub コード
・やりたいこと
開いたブックのRange("B4:X4")から配列をFind、選択し最終行までコピー
ThisworkbookのRange("B6:S6")から同じ配列名をFind、選択してペースト
・エラー
FoundCell2.Selectコードで「Rangeクラスのselectメソッドが失敗しました。」とでます。
Findがうまくいってないと思うので、いろいろと試したのですが、うまくいきません。
いちいちこんなコードを書かず、SheetコピーしてVlookで検索すればいい等いろいろ疑問はあるかと思いますが…
どなたかご教示いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/09 13:50