![](/img/trans.png)
[英]VBA/Excel Find a string in a cell to determine the next cell's value
[英]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
没有Range.Set
属性/方法。 它是无效的,因此当我试图解决您的问题以包含您评论中的代码时,为什么我没有包含它。
.Range
语法只是With wb.Sheets("Open Quote")
语句的延续; 所以.Range
实际上意味着wb.Sheets("Open Quote").Range
。
当您调用Range
(没有.
)时,您使用对活动工作表的隐式引用; 由于您刚刚打开了一个文件,您将其引用为wb
,因此其中的活动工作表现在处于活动状态,而不是子例程启动时处于活动状态的工作表/工作簿。
请参阅参考: 避免隐式代码
那么, Range(L3)
应该在什么工作簿/工作表上?
您永远不会测试以查看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.