[英]VBA Excel - find a value in a column, paste to another sheet
我有一個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”,在“設置查找= ...”部分鍵入不匹配。 通常,我不太了解如何在“ fraislist”工作簿中的選定單元格上運行“ .find” ...
ActiveCell
的問題在於它將始終引用Activesheet
,因此應避免使用諸如Activecell/Select/Activate/ActiveSheet/Activeworkbook
語句。 始終創建相關對象並使用它們
在您的情況下,不必將ActiveSheet
為fraislist.Sheets(1)
這樣ActiveCell
可能不會引用正確的工作表,因此最好完全對其進行限定。
如果將After:=ActiveCell
更改為After:=fraislist.Sheets(1).Range("A1")
則您的代碼將引用正確的工作表,它將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.