我在“开始”页面上有一个命令按钮,想要在事务页面的同一页面上使用F13中的值进行查找,如果找到该值的副本行,则将其粘贴到工作表3上。
我在下面尝试了多种方式的最新尝试。
起始页 - 在F13中查找的值 交易页面 - A列中的搜索范围 Sheet3 - 我想把结果放在哪里
交易表我把F13中的值放在A1中进行测试。所以它应该找到它。
它在A =应用程序中断...我知道有1004错误,不确定我是否做得对,但是输入一些代码以希望能够处理错误。
我尝试在a =应用程序行上方移动on错误,但它最终复制了起始页中的当前单元格并将其粘贴到sheet3中。
抱歉还有很多值得学习的新东西...任何帮助都会很棒!
Private Sub CommandButton7_Click()
Dim WR As String
Dim Lookup_Range As Range
Dim a As String
WR = Sheets("Start page").Range("F13").Value
Set Lookup_Range = Sheets("TransactionTable").Range("A1:A4000")
' vlookup
a = Application.WorksheetFunction.VLookup(Range("F13"), Worksheets("TransactionTable").Range("A1:A4000"), 1, False)
On Error GoTo IGotNothing:
If a = WR Then
Rows(ActiveCell.Row).Select
Selection.Copy
Sheets("Sheet3").Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Exit Sub
Else
IGotNothing:
If Err.Number = 1004 Then
n = CVErr(xlErrNA)
Resume Next
Else
MsgBox ("No value found")
End
End If
End If
End Sub
答案 0 :(得分:0)
您应该声明Dim a As Variant
而不是Dim a As String
并使用Application.VLookup
代替WorksheetFunction.VLookup
。这种方法的优点是如果VLookup返回错误,它也将存储在变量a
中,否则代码将正常执行。如果VLookup返回错误,错误处理将处理它。
尝试这样......
Dim a As Variant
a = Application.VLookup(Range("F13"), Worksheets("TransactionTable").Range("A1:A4000"), 1, False)
答案 1 :(得分:0)
谢谢大家为我学到的所有帮助!
过了一会儿,我决定尝试一个不同的方向,看起来我发现了一些可行的方法。
我基本上使用了计数。再次感谢所有贡献的人!
Private Sub CommandButton11_Click()
a = Worksheets("TransactionTable").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To a
If Worksheets("TransactionTable").Cells(i, 1).Value = Worksheets("Start page").Range("F13").Value Then
Worksheets("TransactionTable").Rows(i).Copy
Worksheets("Sheet3").Activate
b = Worksheets("Sheet3").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet3").Cells(b + 1, 1).Select
ActiveSheet.Paste
Worksheets("Start page").Activate
Else
MsgBox "Workorder does not exist"
End If
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("Start page").Cells(1.1).Select
End Sub