VBA Excel – 在列中查找值,粘贴到另一个表

我有一个excel工作表的文件夹,还有另一个工作表,其中的条目对应于文件夹中的工作表的文件名。

工作表名称右边的列有一个数字,我要将其粘贴到每个相应的工作表中,但这不起作用…以下是我的代码到目前为止:

Sub FraisRank() Dim folderPath As String Dim filename As String Dim filenameshort As String Dim wb As Workbook Dim fraislist As Workbook Dim find As Range Dim sel As Range folderPath = "C:\Users\richard\Desktop\temp" If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\" Set fraislist = Workbooks.Open("C:\Users\richard\desktop\frais list.xlsx") filename = Dir(folderPath & "*.*") Do While filename <> "" Application.ScreenUpdating = False Set wb = Workbooks.Open(folderPath & filename) filenameshort = Left(filename, Len(filename) - 4) Set sel = fraislist.Sheets(1).Range("A1:A164") Set find = sel.find(What:=filenameshort, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If find Is Nothing Then MsgBox ("Cell " & filenameshort & " not found") Else find.Offset(, 1).Resize(1, 1).Copy ActiveSheet.Range("$H$5").PasteSpecial Paste:=xlPasteValues End If ActiveWorkbook.Save ActiveWorkbook.Close filename = Dir Loop End Sub 

目前,我得到一个运行时错误“13”,input不匹配的“设置查找= …”的一部分。 一般来说,我不太了解如何在'fraislist'工作簿中选定的单元格上运行'.find'…

ActiveCell的问题是它总是会引用Activesheet ,因此应该避免像Activecell/Select/Activate/ActiveSheet/Activeworkbook这样的语句。 总是创build相关的对象,并与他们合作

有趣的阅​​读

在你的情况下,没有必要ActiveSheetfraislist.Sheets(1)所以ActiveCell可能不是指的正确的工作表,因此,最好完全限定它。

如果你改变After:=ActiveCell After:=fraislist.Sheets(1).Range("A1")那么你的代码将引用正确的工作表,它将工作。