0

文字列 FindString の各インスタンスの値を使用して、UserForm1 のテキスト ボックスに入力したいと考えています。

テキストボックスごとに一意のワークシートを取得しています。しかし、残りの値は、モジュールを実行したときにアクティブなシートからのものです。

これは、文字列 Rng が WorkSheets をループしておらず、最初の WorkSheet にとどまっていることを意味します。どうすればこれを修正できますか?

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
4

1 に答える 1

0

とった!

追加するだけでした

ws.Activate

If ws.Name Like "Lang*" Then

于 2013-08-26T21:22:26.057 に答える