微軟 Excel - VBA

微軟 Excel - VBA

我是 VBA 新手,正在嘗試編寫程式碼來搜尋 5 個名稱(在sheet2 中),在sheet1 中名稱很少,使用For Loop.

但是當運行這個時,程式碼給出錯誤,

未設定物件變數或 with 區塊變數

我該如何擺脫它?

Sub find()
    Sheets("sheet2").Activate
    For x = 1 To 5
        Cells(x, 1).Select
        var1 = Selection.Copy
        Sheets("sheet1").Activate
        Dim search As Range
        Set search = range("a1:f9").find(var1).Activate
    Next
End Sub

答案1

您可以使用此修改後的 VBA 程式碼,幫助您配對並傳回兩個工作表之間的名稱。

運行巨集之前:

在此輸入影像描述

   Sub QuickSearch()

    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range

    Set ws1 = Sheets(1)
    Set ws2 = Sheets(2)
    Set rng1 = ws2.Range(ws2.[a2], ws2.Cells(Rows.Count, "A").End(xlUp))

    With rng1.Offset(0, 1)
        .FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Sheet10!C[-1]:C,1,FALSE),"""")"
        .Value = .Value
    End With

End Sub
  • 您可以在任何工作表中輸入此代碼作為標準模組。

運行巨集後:

在此輸入影像描述

注意

ws2.Range(ws2.[a2], ws2.Cells(Rows.Count, "A").End(xlUp))
  • 在此程式碼行[a2](儲存格引用)和"A"(列名稱)中,是可編輯的。

答案2

Selection.Copy是一個目的,所以命令

var1 = Selection.Copy

產生你的錯誤 - 它必須是

Set var1 = Selection.Copy

但這不是你想要的——你想要的變數中所選的內容(文字)var1

所以使用

var1 = Selection.Text

反而。

相關內容