Anzeige
Archiv - Navigation
1184to1188
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Suchen und Ersetzen durch VBA
Sascha
Hallo zusammen,
ich habe ein Problem.
Ich habe eine Userform für die verwaltung von Kundendaten. Jetzt soll es möglich sein einen Kunden anzulegen (funktioniert), zu suchen (funktioniert) und einen gesuchten Kunden zu ändern (funktioniert nicht richtig).
Leider fügt mir mein VBA Code nur einen neuen Kunden mit den neuen Daten hinzu ohne den alten zu überschreiben.
Ich habe auch schon hier danach gesucht aber nichts passendes gefunden.
Könnt ihr mir eventuell helfen?
Hier der Code:

Private Sub CommandButton3_Click()
'  Daten ändern
Dim lZeile As Long
Dim iSpalte As Integer
Dim c As Range
With Sheets("Datenbank").Range("A2:A" & Range("A65536").End(xlUp).Row)
Set c = .Find(TextBox1.Value, LookIn:=xlValues)
If Not c Is Nothing Then
lZeile = c.Row
Else: lZeile = Sheets("Datenbank").Range("A65536").End(xlUp).Row + 1
End If
End With
For iSpalte = 1 To 25
Sheets("Datenbank").Cells(lZeile, iSpalte) = Controls("TextBox" & iSpalte)
Next iSpalte
TextBox26.SetFocus
End Sub

Funktion:
1. Abgleich von Inhalt in Textfeld 1 mit Spalte A ab A2 in Tabelle "Datenbank"
2. Ersetzen bzw. Überschreiben der Daten in der entsprechenden Zeile ab Axxxx bis Yxxxx
Da der Kunde erst gesucht wird und dann die gefundenen Daten in der Userform geändert werden, muss es immer eine erfolgreiche Suche bei der Änderung geben.
Die Zahl (Kundennummer) in A ist einmalig und kann kein zweites Mal vorhanden sein.
Liebe Grüße,
Sascha.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Suchen und Ersetzen durch VBA
15.11.2010 17:14:58
Sascha
Hi,
Danke für den Link, hast du in den falschen Beitrag gepostet?
Wenn ja und du meinst mich in diesem Beitrag, dann ei gesagt, dass die erste Zeile eine Überschriftenzeile ist.
Es gibt keine formatierten Zellen in diesem Tabellenblatt, keine Rahmen, keine Farben, nur Text mit Kundendaten. Ich denke schon dass ich mich Excelprofi nennen darf, da ich deine besagten 10 Jahre locker übertreffe. den Code hat ein bekannter geschrieben, der sich jedoch seit samstag für zwei Wochen in Ägypten befindet, darum frag ich ja hier nach.
Es gibt übrigens auch keine leeren Zellen, alle Zellen von A-Y sind beschrieben und das gilt für jeden Kunden (ein Kunde pro Zeile mit je 25 Daten)
Anzeige
AW: Suchen und Ersetzen durch VBA
15.11.2010 18:15:13
Christian
Hallo Sascha,
klar, Sascha und Pascal sind ja eigentlich nicht zu verwechseln - das Thema war nahezu identisch, ebenso die Einschätzung des Levels. Ohne auf den Namen zu achten bin ich darüber gestolpert - sorry.
Zu Deiner Frage:
Bei deinem Code fällt auf, dass du nicht korrekt , sprich vollständig referenzierst.
probier mal (ungetestet):
Private Sub CommandButton3_Click()
'   Daten ändern
Dim lZeile As Long
Dim iSpalte As Integer
Dim c As Range
With Sheets("Datenbank").Range("A2:A" & Sheets("Datenbank").Range("A65536").End(xlUp).Row)
Set c = .Find(TextBox1.Value, LookIn:=xlValues)
If Not c Is Nothing Then
lZeile = c.Row
Else: lZeile = Sheets("Datenbank").Range("A65536").End(xlUp).Row + 1
End If
End With
For iSpalte = 1 To 25
Sheets("Datenbank").Cells(lZeile, iSpalte) = Controls("TextBox" & iSpalte)
Next iSpalte
TextBox26.SetFocus
End Sub
Des Weiteren kann ich nicht empfehlen, die Range-Adresse aus Strings aufzubauen.
Gruß
Christian
Anzeige
AW: Suchen und Ersetzen durch VBA
15.11.2010 20:02:00
Sascha
Perfekt!
Danke schön für deine Hilfe.
Das hier fehlte wohl im Code.
& Sheets("Datenbank")
Ist das VBA-Basiswissen hier auf herber.de zu empfehlen oder gibt es andere Seiten die gut sidn für VBA Anfänger?
Da ich es in Zukunft doch sehr gut gebrauchen kann, werde ich es auf jeden Fall mal lernen.
Gruß Sascha.
AW: Suchen und Ersetzen durch VBA
15.11.2010 18:00:49
Tino
Hallo,
was steht hinter TextBox1.Value für ein Suchbegriff, eine Zahl, ein Datum oder eine Zahl?
Sonst würde ich es in etwa so machen.
Eventuell muss die Textbox mit CLng(), CDbl(), CDate() oder ähnlichen umgewandelt werden.
Private Sub CommandButton3_Click()
Dim varRow, lngSpalte&

With Sheets("Datenbank")
    With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 25)
        'eventuell Wert der Textbox umwandeln Datum oder Zahl 
        varRow = Application.Match(Textbox1, .Columns(1), 0)
       
        If IsNumeric(varRow) Then
            For lngSpalte = 1 To 25
                 .Cells(varRow, lngSpalte) = Controls("TextBox" & CStr(lngSpalte))
            Next iSpalte
        Else
            MsgBox "nix gefunden"
        End If
    End With
End With

TextBox26.SetFocus
End Sub
Gruß Tino
Anzeige

328 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige