簡體   English   中英

Excel VBA .find問題

[英]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.

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