簡體   English   中英

VBA Excel-在列中查找值,粘貼到另一張表

[英]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語句。 始終創建相關對象並使用它們

有趣的閱​​讀

在您的情況下,不必將ActiveSheetfraislist.Sheets(1)這樣ActiveCell可能不會引用正確的工作表,因此最好完全對其進行限定。

如果將After:=ActiveCell更改為After:=fraislist.Sheets(1).Range("A1")則您的代碼將引用正確的工作表,它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM