簡體   English   中英

有沒有辦法讓 VBA excel 在文件中找到一個單詞/單詞字符串並返回它旁邊單元格中的值?

[英]Is there a way to have VBA excel find a word/string of words in a file and return the value in the cell next to it?

我有一個宏可以查找單元格並將它們插入到另一個工作表中,但是,列和行值並不總是與有時添加的行/列保持相同,所以我不能只查找特定的單元格移動。 我希望能夠查找左側的單元格,該單元格對於文件“每班次總成本”是唯一的,並在右側的列中返回成本。 這樣無論數字在哪一行或哪一列,它都會返回正確的信息。

這是我所擁有的:

Option Explicit

Sub CostingInfo()
Dim wb As Workbook, sht As Worksheet, pth As String

    Set sht = ActiveSheet
    pth = "='[" & sht.Parent.Name & "]" & sht.Name & "'!"
    Set wb = Workbooks.Open("\\FS3\Users$\UsersName\Desktop\Costing Template Test.xlsx")
    With wb.Sheets("Open Quote")
        .Range("B3:C3").FormulaR1C1 = pth & "R6C2" ' .Range("L3"). ????
        Set cell = Range("A1:BA350").Find("Total Cost per Shift")
        Range(ActiveCell, ActiveCell.Offset(0, 1)).Copy
    End With
End Sub
  1. 沒有Range.Set屬性/方法。 它是無效的,因此當我試圖解決您的問題以包含您評論中的代碼時,為什么我沒有包含它。

  2. .Range語法只是With wb.Sheets("Open Quote")語句的延續; 所以.Range實際上意味着wb.Sheets("Open Quote").Range

  3. 當您調用Range (沒有. )時,您使用對活動工作表的隱式引用; 由於您剛剛打開了一個文件,您將其引用為wb ,因此其中的活動工作表現在處於活動狀態,而不是子例程啟動時處於活動狀態的工作表/工作簿。

    請參閱參考: 避免隱式代碼

  4. 那么, Range(L3)應該在什么工作簿/工作表上?

  5. 您永遠不會測試以查看if cell is nothing then或者在此之后在代碼中的任何位置實際使用cell


遇到問題時,應在問題前放置一個斷點 (F9) 並使用F8步執行,一次一行。

您可以將鼠標懸停在變量上,添加 Watch 和/或使用Debug.Print將值顯示到即時窗口 (Ctrl+G)。

嘗試,

Debug.Print .Range("L3").Parent & ".Range(" & .Range("L3").Address & ")"
Debug.Print Range("A1:BA350").Parent & ".Range(" & Range("A1:BA350").Address & ")"
Debug.Print cell.Parent & ".Range(" & cell.Address & ")"

請編輯問題以包含您當前使用的代碼。

(最好包括Option Explicit

暫無
暫無

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

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