VBA匹配函数,用于查找非活动工作表上的活动单元格值并更改活动工作表上的值
我尝试在另一张工作表上查找光标使用application.match函数的活动单元格的值。如果找到它,我希望根据ActiveCell.Row和确定的列更改活动工作表中单元格的值 我试着使用这个代码VBA匹配函数,用于查找非活动工作表上的活动单元格值并更改活动工作表上的值,vba,excel,Vba,Excel,我尝试在另一张工作表上查找光标使用application.match函数的活动单元格的值。如果找到它,我希望根据ActiveCell.Row和确定的列更改活动工作表中单元格的值 我试着使用这个代码 Sub test() Dim wert As String Dim such1 As String Dim var As Integer such1 = ActiveCell.Value On Error Resume Next var = Appli
Sub test()
Dim wert As String
Dim such1 As String
Dim var As Integer
such1 = ActiveCell.Value
On Error Resume Next
var = Application.Match(such1, Worksheets(Test1).Columns(1), 0)
If Err = 0 Then
wert = Sheets("Test2").Cell(var, "N").Value
Sheets("Test2").Cell(ActiveCell.Row, "O").Value = wert
Else
MsgBox "Value not existent"
End If
End Sub
不知怎的,我总是收到错误信息。我不明白为什么。你知道吗?使用如下语法:
Option Explicit
Public Sub test()
Dim foundRow As Variant
Dim activeRow As Long
Dim foundN As String
activeRow = ActiveCell.Row
foundRow = Application.Match(ActiveCell, Worksheets("Test1").Columns(1), 0)
If Not IsError(foundRow) Then
foundN = Worksheets("Test2").Cells(foundRow, "N").Value
Worksheets("Test2").Cells(activeRow, "O").Value = foundN
Else
MsgBox "Value not existent"
End If
End Sub
代码中的错误:
应该是工作表(test1)
工作表(“test1”)
应为工作表(“Test2”)。单元格
(单元格末尾的“s”)工作表(“Test2”)。单元格
- 应用程序.Match()和工作表function.Match()之间有细微的区别
不如WorksheetFunction.Match()
Application.Match()可靠。
抛出运行时错误WorksheetFunction.Match()
- 您需要使用“错误恢复下一步”语句
,以绕过VBA错误
- 您需要使用“错误恢复下一步”语句
返回一个错误对象Application.Match()
- 错误恢复下一步时的语句
不起作用 - 要检查返回值,必须使用
If-IsError(Application.Match(…)
- 请注意foundRow的定义方式:
Dim foundRow As
Variant
- 返回值可以是行号(长)或错误对象(变量)
- 错误恢复下一步时的语句
InactiveSheet
声明或分配任何值,因此宏无法找到此类工作表。另一个问题:您有名为ActiveSheet
的工作表吗?如果要使用当前处于活动状态的工作表,只需使用ActiveSheet.Cell
,而不是Sheets(“ActiveSheet”).Cell
。您好,很抱歉造成混淆。对于非活动工作表和活动工作表,我只想成为通用的。所以,InactiveSheet将是例如测试1,ActiveSheet将是测试2。我在上面更改了它。我正确地阅读了microsoft关于如何为application.match函数编写工作表名称的说明。除了我已经习惯了之外,我还得不带“.谢谢你!很有效,太好了!同时也非常感谢您的有益解释!