Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Suchmakro - sucht, löscht, sucht

Betrifft: Suchmakro - sucht, löscht, sucht von: MichiM
Geschrieben am: 18.08.2004 20:14:42

Hallo Leute,

ich starte ein Suchmakro (in Modul1) aus einer UserForm.
Bei Auswahl eines KD-Nummer bzw. eines Namen sollen die dazugehörigen Rechnungen gesucht und im Blatt "Zwischenspeicher" kopiert werden.


Nun werden mir die Werte kopiert - aber bei einem weiterem Suchergebniss wieder überschrieben - am Ende steht also immer nur die "letzte gefundene Rechnung" im Zwischenspeicher.

---------------------------------------

Sub Rechnungsdaten_suchen()

    Dim Suchkunde As String



        

ThisWorkbook.Sheets("Zwischenspeicher").Unprotect "meinPasswort"

Worksheets("Zwischenspeicher").Range("A26:L40").ClearContents
 

    Suchkunde = ""

Worksheets("Zwischenspeicher").Cells(2, 1) = ufKUNDEN.TextBox70.Value
Worksheets("Zwischenspeicher").Cells(2, 2) = ufKUNDEN.TextBox71.Value
Worksheets("Zwischenspeicher").Cells(2, 3) = ufKUNDEN.tbRECHNUNG_ANSCHRIFT.Value
Worksheets("Zwischenspeicher").Cells(2, 4) = ufKUNDEN.tbRECHNUNG_PLZ.Value
Worksheets("Zwischenspeicher").Cells(2, 5) = ufKUNDEN.tbRECHNUNG_ORT.Value
Worksheets("Zwischenspeicher").Cells(2, 6) = ufKUNDEN.tbRECHNUNG_LAND.Value
Worksheets("Zwischenspeicher").Cells(2, 7) = Worksheets("Hauptmenü").Cells(1, 6)
    
    If Not (Worksheets("Zwischenspeicher").Cells(2, 1).Value) = "" Then
       Suchkunde = Worksheets("Zwischenspeicher").Cells(2, 1).Value
       Auswahlsumme = Auswahlsumme + 1
    End If

        
    Select Case Auswahlsumme
           Case 1
              Suche1 (Suchkunde)
            
     End Select
    
ThisWorkbook.Sheets("Zwischenspeicher").Protect "meinPasswort"

End Sub

---------------------------------------
Sub Suche1(Kunde As String)
     
     Dim I As Integer

    For I = 2 To Worksheets("Rechnungen").Cells(Rows.Count, 1).End(xlUp).Row
        If Kunde = Worksheets("Rechnungen").Cells(I, 1).Value Then
           Kopieren (I)
        End If
    Next
        
End Sub

---------------------------------------
Sub Kopieren(Zeile As Long)

ThisWorkbook.Sheets("Zwischenspeicher").Unprotect "meinPasswort"


    Dim NextRow As Long
    NextRow = Worksheets("Zwischenspeicher").Cells(Rows.Count, 6).End(xlUp).Row + 1
    Worksheets("Zwischenspeicher").Cells(NextRow, 1) = _
    Worksheets("Rechnungen").Cells(Zeile, 3)
    Worksheets("Zwischenspeicher").Cells(NextRow, 2) = _
    Worksheets("Rechnungen").Cells(Zeile, 4)
    Worksheets("Zwischenspeicher").Cells(NextRow, 3) = _
    Worksheets("Rechnungen").Cells(Zeile, 6)
    Worksheets("Zwischenspeicher").Cells(NextRow, 4) = _
    Worksheets("Rechnungen").Cells(Zeile, 5)
    Worksheets("Zwischenspeicher").Cells(NextRow, 8) = _
    Worksheets("Rechnungen").Cells(Zeile, 13)
    Worksheets("Zwischenspeicher").Cells(NextRow, 10) = _
    Worksheets("Rechnungen").Cells(Zeile, 14)
    Worksheets("Zwischenspeicher").Cells(NextRow, 11) = _
    Worksheets("Rechnungen").Cells(Zeile, 15)
    Worksheets("Zwischenspeicher").Cells(NextRow, 12) = _
    Worksheets("Rechnungen").Cells(Zeile, 16)
    
    
ThisWorkbook.Sheets("Zwischenspeicher").Protect "meinPasswort"

End Sub

---------------------------------------

Weiss einer, was ich hier falsch mache?

Gruss
MichiM
  


Betrifft: mal auf die Schnelle von: DieterB
Geschrieben am: 18.08.2004 20:31:11

L40").ClearContents

löscht die Inhalte der Zellen

Gruß

DieterB


  


Betrifft: AW: mal auf die Schnelle von: MichiM
Geschrieben am: 18.08.2004 20:42:36

Richtig, aber bevor die Suche "beginnt".
War mir allerdings auch nicht sicher und habe diesen Teil auch schon als Kommentar deklariert - der Fehler war aber dergleiche :-)

Gruss
MichiM


  


Betrifft: AW: mal auf die Schnelle von: DieterB
Geschrieben am: 18.08.2004 20:44:27

hast du mal den debugger eingesetzt????

Gruß

DieterB


  


Betrifft: AW: mal auf die Schnelle von: MichiM
Geschrieben am: 18.08.2004 20:47:38

Wenn ich wüsste, wie er "einzusetzen" geht....
Was bewirkt er?

Gruss
MichiM


  


Betrifft: AW: mal auf die Schnelle von: DieterB
Geschrieben am: 18.08.2004 20:51:03

der debugger geht step by step durch den code
du markierst eine zeile im VBA-Code und dann die F8-taste
findest du im VBA-Editor in der Menü-Leiste

Gruß

DieterB


  


Betrifft: AW: mal auf die Schnelle von: MichiM
Geschrieben am: 18.08.2004 20:52:49

Ich vermute, dass etwas mit

NextRow = Worksheets("Zwischenspeicher").Cells(Rows.Count, 6).End(xlUp).Row + 1

nicht stimmt.
Die Werte werden immer(!) in der Zeile 26 eingetragen - egal ob bereits ab Zeile 10 oder erst ab Zeile 35 frei ist...

Gruss
MichiM


  


Betrifft: AW: Suchmakro - sucht, löscht, sucht von: PeterW
Geschrieben am: 18.08.2004 20:53:40

Hallo MichiM,

vielleicht solltest du erst mal die erste leere Zeile in "Zwischenspeicher" ermitteln und dorthin die Werte schreiben, statt immer in Zeile 2 anzufangen. Warum der Zwischenspeicher überhaupt nötig ist kann ich nicht nachvollziehen.

Gruß
Peter


  


Betrifft: AW: Suchmakro - sucht, löscht, sucht von: MichiM
Geschrieben am: 18.08.2004 20:59:52

Hallo Peter,
wieso beginne ich immer in Zeile 2?

Was ermittel ich denn mit
NextRow = Worksheets("Zwischenspeicher").Cells(Rows.Count, 6).End(xlUp).Row + 1

Den Zwischenspeicher brauche ich, um Kundenbezogene Rechnungen aus der Gesamtliste zu kopieren - zwecks Index einer ComboBox in der UserForm...
So hat der Benutzer immer die Rechnungen zur Auswahl, die zum Kunden gehören.

Gruss
MichiM


  


Betrifft: AW: Suchmakro - sucht, löscht, sucht von: PeterW
Geschrieben am: 18.08.2004 21:05:12

Hallo MichiM,

aus deinen Codefragmenten:
Worksheets("Zwischenspeicher").Cells(2, 1) = ufKUNDEN.TextBox70.Value
Worksheets("Zwischenspeicher").Cells(2, 2) = ufKUNDEN.TextBox71.Value

Gruß
Peter


  


Betrifft: AW: Suchmakro - sucht, löscht, sucht von: MichiM
Geschrieben am: 18.08.2004 21:10:35

Dort werden die Werte aus der UserForm gelesen (als Suckriterium und für die weitere Bearbeitung :-)

Aber selbst wenn ich die weglasse (und das Suchkriterium manuell eingebe) passiert der Fehler :-(
Daran kann es also nicht liegen....

Gruss
MichiM


  


Betrifft: AW: Suchmakro - sucht, löscht, sucht von: PeterW
Geschrieben am: 18.08.2004 21:17:55

Hallo MichiM,

aus deiner ursprünglichen Frage:
"Nun werden mir die Werte kopiert - aber bei einem weiterem Suchergebniss wieder überschrieben - am Ende steht also immer nur die "letzte gefundene Rechnung" im Zwischenspeicher."

Gruß
Peter


  


Betrifft: ??? von: MichiM
Geschrieben am: 18.08.2004 21:22:54

Im Ausgangsposting habe ich auch geschrieben:
Bei Auswahl eines KD-Nummer bzw. eines Namen sollen die dazugehörigen Rechnungen gesucht und im Blatt "Zwischenspeicher" kopiert werden.

Dachte, es würde reichen, wenn ich nur einmal schreibe, dass es sich um ein Tabellenblat handelt...

Die leere Zeilensuche klappt (aus welchen Gründen auch immer) nicht richtig - aber was soll da verkehrt sein?

Gruss
MichiM


  


Betrifft: AW: ??? von: PeterW
Geschrieben am: 18.08.2004 21:25:56

Sorry MichiM,

bei deiner Aufgabenstellung muss ich leider passen.

Viel Erfolg
Peter


  


Betrifft: Auf ein Neues... von: MichiM
Geschrieben am: 18.08.2004 21:53:40

Also,
in der angehängten Datei wird über den Button "Rechnung suchen" im Blatt "Zwischenspeicher" das Makro Rechnungsdaten_suchen ausgelöst.
Dies soll die Daten (in diesem Beispiel alle Rechnungen) in das Blatt Zwischenspeicher kopieren.
Seltsamer weise wird aber immer in die Zeile 26 geschrieben - und meine frage ist: WARUM???

https://www.herber.de/bbs/user/9790.xls


Gruss
MichiM


  


Betrifft: AW: Auf ein Neues... von: DieterB
Geschrieben am: 18.08.2004 22:14:53

Ich will ja nix sagen, aber die datei enthält kein UF


  


Betrifft: AW: Auf ein Neues... von: MichiM
Geschrieben am: 18.08.2004 22:29:42

Ich wollte ungern die Originaldatei mit den "externen" Datei-Verweisen hochladen - daher die gekürzte Version.

Ist vom Prinzip aber nichts anderes - die Suchkriterien (die im Original in der userForm stehen) sind in der Tabelle als Wert angegeben.
Die Suche an sich funktioniert ja auch - aber nicht die Ausgabe. Und darum geht es hier...

Gruss
MichiM


  


Betrifft: hat sich erledigt von: MichiM
Geschrieben am: 20.08.2004 18:28:47

Nachdem ich verschiedene Varianten zum ermitteln der letzten Zeile versucht habe, funktioniert es jetzt endlich - frag mich aber keiner warum....

Gruss
MichiM