[英]Excel VBA .find issue
我是該論壇的新成員,但是已經做了一些有關此特定問題的搜索。 我還沒找到任何東西。
我需要一個VBA
腳本,該腳本將搜索第一個工作簿wb1
位於單元格I7
中的wb1
,並在另一個工作簿wb2
“代碼”工作表中將該條目引用到列A:A
中,列A:A
中單元格I7
中的值,它將把文本“找到的值”放入單元格I7
。 如果在列范圍內找不到該值,它將按原樣將舊表中的舊值復制並粘貼到新表中。
Excel似乎正在執行該代碼,但是我得到的問題是,如果該值不在所引用的列中,則該代碼似乎沒有選擇它,因此該代碼只是將“找到的值” ”(無論是否在引用的列中找到該值),我是否在這里丟失了某些內容?
Dim wb1 as Workbook, wb2 as Workbook,
Dim Sh1 as Worksheet
Dim WBS as Range
Set Sh1 = wb1.Sheets("Codes").Range("A:A")
Set WBS = Sh1.Columns(1).Find(What:=wb2.Sheets("Summary").Range("I7:I7").Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If WBS Is Nothing Then
wb1.Sheets("Summary").Range("I7:I7").Copy
wb2.Sheets("Summary").Range("I7:I7").PasteSpecial Paste:=xlPasteAll
Else
wb2.Sheets("Summary").Range("I7:I7").Value = "'Value Found"
End If
正如Ron所評論的那樣,您的聲明和實例化需要進行一些修改。 您在代碼的哪里Set
wb1和wb2?
這個簡化的版本可以正常工作:
Sub simplified()
Dim rn1 As Range
Dim WBS As Range
Set rn1 = Range("A:A")
Set WBS = rn1.Find( _
What:=Range("I7").Value, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If WBS Is Nothing Then
Range("I7").Copy
Range("J7").PasteSpecial Paste:= Excel.xlValues
Else
Range("J7").Value = "'Value Found"
End If
End Sub
結果簡化為單個工作簿中的一張紙:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.