我在“开始”页面上有一个命令按钮,想要在事务页面的同一页面上使用F13中的值进行查找,如果找到该值的副本行,则将其粘贴到工作表3上。
我在下面尝试了多种方式的最新尝试。
起始页 - F13中的查找值。交易页面 - 列A中的搜索范围Sheet3 - 我想放置结果的位置
事务表我把F13中的值放在A1中进行测试。所以它应该找到它。
它在A =应用程序中断...我知道有1004错误,不确定我是否做得对,但是放入一些代码以希望处理错误。
我尝试在a =应用程序行上方移动on错误,但它最终复制了起始页中的当前单元格并将其粘贴到sheet3中。
对不起,还有很多新的vba需要学习...任何帮助都会很棒!
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
您应该声明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)
谢谢大家为我学到的所有帮助!
过了一会儿,我决定尝试一个不同的方向,看起来我发现了一些可行的方法。
我基本上用了一个数。再次感谢所有贡献的人!
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