繁体   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