2016-05-24 10 views
1

Ich habe Excel 2013-Arbeitsmappe mit mehr als 100 Blatt. Ich versuche, einen bestimmten Wert zu finden und mehrere Zeilen über die Arbeitsmappe mit diesem Wert auszuwählen und dann eine Zeile einzufügen, um Daten quer eingeben zu können Blätter als eine Gruppe.Suchen und Auswählen mehrerer Zeilen in der Arbeitsmappe

Momentan arbeite ich an folgenden VBA-Code, aber ich stecke bei Fehler "Laufzeitfehler '5': Ungültiger Prozeduraufruf oder Argument" gegen diese Zeile: addSelection = Mid (addSelection, 1, Len (addSelection) - 1).

Public Sub SelectMultiple() 
    Dim wbkthis As Workbook 
    Dim shtthis As Worksheet 
    Dim rngThis As Range 
    Dim rngFind As Range 
    Dim firstAddress As String 
    Dim addSelection As String 


    Set wbkthis = ThisWorkbook 
    Set shtthis = wbkthis.Worksheets("Sheet1") 

    // Set our range to search 
    Set rngThis = shtthis.Range("B2", "B10") 

    // Loop through it 
    With rngThis 

     // Find our required text 
     Set rngFind = .Find("Jack") 

     // If we find it then... 
     If Not rngFind Is Nothing Then 
      firstAddress = rngFind.Address // Take a note of where we first found it 
      addSelection = addSelection & rngFind.Address & "," // Add the cell's range to our selection 

      // Loop through the rest of our range and find any other instances. 
      Do 
       Set rngFind = .FindNext(rngFind) 
       addSelection = addSelection & rngFind.Address & "," 
      Loop While Not rngFind Is Nothing And rngFind.Address <> firstAddress 

     End If 
    End With 

    // Trim the last comma from our string 
    addSelection = Mid(addSelection, 1, Len(addSelection) - 1) 
    shtthis.Range(addSelection).Rows.Select // Select our rows! 

    Set rngThis = Nothing 
    Set shtthis = Nothing 
    Set wbkthis = Nothing 

End Sub 

Vielen Dank für Ihre Hilfe bei der Erfüllung der oben genannten Aufgabe.

Leo

+0

Bevor diese Zeile ausgeführt wird (letztes Komma trimmen), was fügt addSelection zurück? (Sie können zum Beispiel durch Einfügen von 'msgbox (addSelection)' oder 'debug.print (addSelection)' vor dieser Zeile. – Sun

+0

Es ist leer zurück " " – LEO

+0

Ok, überprüfen Sie meine Antwort, hoffe es funktioniert. Übrigens, Haben Sie "Jack" in Ihrem Bereich? – Sun

Antwort

0

Ok müssen Sie zunächst prüfen, ob der String leer ist oder nicht.

If len(addSelection) > 0 then 
    addSelection = left(addSelection, Len(addSelection) - 1) 
    shtthis.Range(addSelection).EntireRow.Select 
End if 

I ersetzt auch Ihre mid() Funktion, weil ich (dachte links) ist einfacher, aber Ihre Mitte-Funktion sollte genauso gut funktionieren.

+0

Ich bekomme Kompilierfehler: Variable erforderlich - nicht zuweisen zu diesem Ausdruck – LEO

+0

Ich habe "Jack" in B2 – LEO

+0

auch nur links() anstelle von Mitte(), aber immer noch den gleichen Fehler, würde es begrüßen, wenn Sie den Code auf Ihrem Computer ausführen könnten. Nur um zu überprüfen, ob Problem isn ' Danke an mich, danke! – LEO

Verwandte Themen