簡體   English   中英

Excel查找VBA無法正常工作

[英]Excel Find VBA is not working

這是我嘗試的代碼。 但這卡在查找單元格中( Set RangeObj = Cells.find )。

請檢查以下代碼:

Sub CopyFromFile()
Dim MyFile As String
Dim erow
Dim Filepath As String
Filepath = "C:\Users\Nazmul Hossain Akash\Desktop\Play Excel\Final\"
MyFile = Dir(Filepath)
Do While Len(MyFile) > 0
    If MyFile = "zmaster.xlsm" Then
        Exit Sub
    End If

    Workbooks.Open (Filepath & MyFile)
    Range("B2:D18").Copy
    Set RangeObj = Cells(1, "A")
    ActiveWorkbook.Close

    Set RangeObj = Cells.Find(What:=RangeObj, After:=ActiveCell, _
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False)

    If RangeObj Is Nothing Then MsgBox "Not Found" Else RangeObj.Select
    ActiveCell.Offset(rowOffset:=2, columnOffset:=0).Activate

    ActiveSheet.PasteSpecial

    MyFile = Dir
Loop
End Sub

我想我看到了問題。 您仍然不會使RangeObj Dim (並且我在頂部看不到Option Explicit !-請添加它)。 這將使您使每個變量都Dim ,因此您必須決定變量將是哪種數據類型,包括RangeObj RangeObj在這里是個問題。 由於您確實Set RangeObj = Cells.Find() ,因此可以將其作為范圍對象。 但是,在此之前,請先Set RangeObj = ActiveWorkbook.Cells(1, "A") -進行Set 這是一個錯誤,因為這樣可以獲取對象,然后在.Find()使用它。 您應該將任何內容傳遞給.Find() ,而不是對象。 讓我們嘗試解決問題:

  1. 在最上方插入以下行:

      顯式期權 
  2. 調暗RangeObj:

      昏暗RangeObj作為范圍 
  3. 將另一個用於存儲文本的變量引入.find()

      Dim RangeStr作為字符串 
  4. RangeStr = ActiveWorkbook.Cells(1, "A").Value替換Set RangeObj = ActiveWorkbook.Cells(1, "A")

  5. Cells.Find(What:=RangeStr,替換Cells.Find(What:=RangeObj, Cells.Find(What:=RangeStr,

讓我們看看它帶來了什么。

暫無
暫無

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

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