Я пытаюсь создать пользовательскую форму, где пользователи могут ввести номер партии, а когда они нажмут OK, функция VLOOKUP предоставит им необходимую им информацию. Однако целевые данные находятся на двух разных листах (например, на листе 1 и на листе2).VLookup в нескольких листах
Мне удалось создать VBA ниже, но он работает только для sheet1. И если введена неправильная партия, результат и msgbox не отображаются.
Что я делаю неправильно?
Private Sub CommandButton1_Click()
On Error GoTo myerrorhandler
Dim Batch As Long
Dim Result
Dim Result2
Dim Target1 As Range
Dim Target2 As Range
Dim ws As Worksheet
Batch = TextBox1.text
Set Target1 = ActiveWorkbook.Sheets("sheet1").Range("C7:ZZ10000")
Set Target2 = ActiveWorkbook.Sheets("sheet2").Range("C7:ZZ1000")
Result = vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target1, 1, False)
Result = Result & vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target1, 17, False)
Result = Result & vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target1, 18, False)
Result = Result & vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target1, 20, False)
If Result > 0 Then
MsgBox "Batch details:" & vbNewLine & Result
ElseIf Result = 0 Then
Result2 = vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target2, 1, False)
Result2 = Result & vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target2, 17, False)
Result2 = Result & vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target2, 18, False)
Result2 = Result & vbNewLine & "Batch: " & Application.WorksheetFunction.VLookup(Batch, Target2, 20, False)
If Result > 0 Then
MsgBox "Batch details:" & vbNewLine & Result2
ElseIf Result2 = 0 Then
MsgBox "Not present, or wrong entry"
End If
End If
Exit Sub
myerrorhandler:
If Err.Number = 13 Then
MsgBox "Invalid value"
End If
End Sub
Спасибо за Ваш ответ! Ваш код дает те же результаты, что и мой код. Результатом VLOOKUP (Результат и результат2) являются текст. VLOOKUP в листе 2, похоже, не имеет места. – artsjeroen
Вы пытались разместить точки останова, чтобы увидеть, где код идет с тестами? Если вы не знаете, как эффективно дебютировать в VBA, посмотрите на них: excel-easy.com/vba/examples/debugging.html и excelcampus.com/vba/vba-immediate-window-excel, это будет сэкономить часы работы кодера;) – R3uK