2013-08-26 5 views
0

Я хотел бы использовать значения из каждого экземпляра строки FindString для заполнения текстовых полей в UserForm1.Поиск строки в каждом открытом рабочем листе

Я получаю уникальный рабочий лист в текстовом поле. Но остальные значения от активного листа, когда я запускаю модуль.

Это означает, что строка Rng не зацикливается на рабочих листах, а остается на начальном рабочем листе. Как я могу это исправить?

Public Sub FindString() 
Dim FindString As Variant 
Dim Rng As Range 
Dim SheetName As String 
Dim ws As Worksheet 
Dim i As Integer 

Application.ScreenUpdating = False 
SheetName = ActiveSheet.Name 

FindString = Cells(ActiveCell.Row, 1).Value 

FindString = InputBox("Enter the case number to search for:", "Case ID", FindString) 
If FindString = "" Then Exit Sub 
If FindString = False Then Exit Sub 


i = 1 

For Each ws In Worksheets 
    If ws.Name Like "Lang*" Then 
     With ws 

      If Trim(FindString) <> "" Then 
       With Range("A:A") 
        Set Rng = .Find(What:=FindString, _ 
            After:=.Cells(.Cells.Count), _ 
            LookIn:=xlValues, _ 
            LookAt:=xlWhole, _ 
            SearchOrder:=xlByRows, _ 
            SearchDirection:=xlNext, _ 
            MatchCase:=False) 
        If Not Rng Is Nothing Then 

      UserForm1.Controls("TextBox" & i) = ws.Name & vbTab & _ 
      Rng.Offset(0, 2).Value & vbTab & _ 
      Rng.Offset(0, 5).Value & vbTab & _ 
      Rng.Offset(0, 6).Value & vbTab & _ 
      Rng.Offset(0, 7).Value & vbTab & _ 
      Rng.Offset(0, 8).Value 

      i = i + 1 

        Else: GoTo NotFound 
        End If 
       End With 
      End If 

     End With 
    End If 
Next ws 

Sheets(SheetName).Activate 
Application.ScreenUpdating = True 
UserForm1.Show 

Exit Sub 

NotFound: 
Sheets(SheetName).Activate 
Application.ScreenUpdating = True 
MsgBox "Case ID not found" 
Exit Sub 

End Sub 

ответ

0

Получил!

Просто нужно добавить

ws.Activate

после

If ws.Name Like "Lang*" Then