[英]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()
,而不是對象。 讓我們嘗試解決問題:
在最上方插入以下行:
顯式期權
調暗RangeObj:
昏暗RangeObj作為范圍
將另一個用於存儲文本的變量引入.find()
:
Dim RangeStr作為字符串
用RangeStr = ActiveWorkbook.Cells(1, "A").Value
替換Set RangeObj = ActiveWorkbook.Cells(1, "A")
用Cells.Find(What:=RangeStr,
替換Cells.Find(What:=RangeObj,
Cells.Find(What:=RangeStr,
讓我們看看它帶來了什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.