2015-07-22 4 views
2

У меня есть код excel vb, в котором я нажал кнопку в excel, когда нажал переход на следующий лист и поиск значения на основе номера сотрудника. Я использовал Vlookup в этом коде. Моя проблема заключается в том, что курсор должен перейти непосредственно к найденной ячейке. Мой код опускается ниже: -Перейти к ячейке, нажав на кнопку

Private Sub CommandButton3_Click() 
Sheets("Sheet2").Activate 

Dim rng As Range 
Dim ws1, ws2 As Worksheet 
Dim MyStringVar1 As String 

Set ws1 = ThisWorkbook.Sheets("Sheet1") 
Set ws2 = ThisWorkbook.Sheets("Sheet2") 
Set rng = ws1.Range("c4") 

With ws1  

    MyStringVar1 = Application.WorksheetFunction.VLookup(rng, ws2.Range("b3:n13").Value, 5, False) 

    On Error GoTo 0  
    If MyStringVar1 = "" Then MsgBox "Item not found" Else MsgBox MyStringVar1 

End With  


End Sub 

ответ

1

Вы пробовали использовать select вместо msgbox

Private Sub CommandButton3_Click() 

Sheets("Sheet2").Activate 

Dim rng As Range 
Dim ws1, ws2 As Worksheet 
Dim MyStringVar1 As String 

Set ws1 = ThisWorkbook.Sheets("Sheet1") 
Set ws2 = ThisWorkbook.Sheets("Sheet2") 
Set rng = ws1.Range("c4") 

With ws1  

    MyStringVar1 = Application.WorksheetFunction.VLookup(rng, ws2.Range("b3:n13").Value, 5, False) 

    On Error GoTo 0  
    If MyStringVar1 = "" Then MsgBox "Item not found" Else MyStringVar1.Select 

End With  


End Sub 
+0

Том ее не работает до сих пор <дает ошибку недопустимый спецификатор MyStringVar1.Select –

0

Постарайся найти вместо этого.

Sub UsingFind() 
    Dim ws As Worksheet, sh As Worksheet 
    Dim Rws As Long, Rng As Range, c As Range, lookRng As Range 

    Set ws = Worksheets("Sheet1") 
    Set sh = Worksheets("Sheet2") 

    With sh 
     Rws = .Cells(Rows.Count, "B").End(xlUp).Row 
     Set Rng = .Range(.Cells(1, "B"), .Cells(Rws, "B")) 
    End With 

    Set lookRng = ws.Range("C4") 
    Set c = Rng.Find(what:=lookRng, lookat:=xlWhole) 

    If Not c Is Nothing Then 
     Application.Goto Reference:=c.OFFSET(0,4) 
    Else: MsgBox "Not Found" 
     Exit Sub 
    End If 
End Sub 

Find data in another sheet

+0

Sorry Davesexcel, я хочу сказать, у меня есть, что значение в ячейке С4 в Лист1, который является номер сотрудника, а при нажатии кнопки в sheet1 щёлкнули он будет искать значение в Sheet2, и когда этот номер сотрудника обнаружит, что курсор перейдет в coloumn no. 5 ... –

+0

Извините Davesexcel, я хочу сказать, что у меня есть значение в ячейке C4 в Sheet1, которая является номером сотрудника, и когда нажата кнопка в листе1, она будет искать значение в Sheet2 и когда будет найден этот номер сотрудника курсор перейдет к coloumn no. 5 ... –

+0

О да, я изменил его на поиск столбца B, а затем он должен перейти в столбец «F» – Davesexcel

0

я бы совет вы строго зависит от VB кода, используя для петли сканирования Sheet2 колонну 1 для равной ценности, как только нашел, что это будет установить фокус на той же строке столбца 5, в приведенном ниже примере код проверяет только 10 строк, которые вы можете настроить, как хотите.

Sub usingvbonly() 
Dim key As String 
Sheets("sheet1").Select 
key = Cells(4, 3).Value 'Value in sheet1 range("C4") 
Sheets("sheet2").Select 
For i = 1 To 10 Step 1 
If Cells(i, 1).Value = key Then 
Cells(i, 5).Select 
End If 
Next i 
End Sub 
+0

@ nad- Мой ответ - только VBA. – Davesexcel