在多个页面上查看vlookup并不知道为什么

时间:2017-12-22 18:17:27

标签: excel vba

我在“开始”页面上有一个命令按钮,想要在事务页面的同一页面上使用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

2 个答案:

答案 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