Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Zeile mit Wert suchen und ändern

VBA Zeile mit Wert suchen und ändern
06.11.2022 10:52:01
Ralf
Hallo zusammen
Könnt Ihr mir helfen?
Ich habe eine UserForm, welche Daten aus dem Tabellenblatt anzeigt und dann auch geändert werden können. Alle festen Zellen sind kein Problem. Nun sollte ich aber einen Code haben, damit eine Zeile mit bestimmten Wert gesucht wird. Dann in einer TextBox angezeigt wird, bearbeitet werden kann und dann den Inhalt anpasst.
folgender Code funktioniert bestens für Zellen welche immer an der gleichen stellen bleiben:
--------------------------------------------------------------------------------------------------------------------------
Code für Anzeige:

Private Sub UserForm_Initialize()
TextBox1.Text = Worksheets("Offerte").Range("B10").Value
End Sub
-----------------------------------------------------------
Code um die angepassten Daten in der Zelle zu schreiben:

Private Sub CommandButton1_Click()
ActiveSheet.Unprotect Password:="1234"
Range("B10:B14").Locked = True
Worksheets("Offerte").Range("B10") = UserForm3.TextBox1.Value
ActiveSheet.Protect Password:="1234"
End Sub
------------------------------------------------------------
Zur gesuchten Zeile:
in der Spalte A steht die Zahl 1000 (so sollte die Zeile gesucht werden) dann soll der Inhalt der Zelle B (dieser Zeile) in der TextBox angezeigt werden und angepasst werden können.
So Hoffe diese Angaben reichen Euch :-)
Bin um jede Hilfe sehr dankbar!
Lg Ralf
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
aha, da wird wieder .....
06.11.2022 11:03:05
ralf_b
..ein Knochen in die Arena geworfen.
Ich finde auch das du einen Code haben solltest.
Hast du denn in diese Richtung schon etwas unternommen außer natürlich diese Frage hier zu posten?
Z.B. die vielen vielen Hilfen oder andere Forenbeiträge was suchen von Werten in Tabellen angeht zu studieren?
Anzeige
AW: VBA Zeile mit Wert suchen und ändern
06.11.2022 13:22:33
Marc
Hier gebe ich als TIPP:
a) Mache dich mit Schleifen vertraut ( For , Do While etc...) , hierbei Wichtig, Wie werden Schleifen initiiert .. Kopfgesteuerte Schleifen, Fußgesteuerte Schleifen
b) mach dich mit Abfragen vertraut ( If ... Else...)
c) verbinde beides...
Wenn du etwas innerhalb einer Tabelle suchst, dann muss du die Tabelle durchsuchen, (hier ist eine Schleife Sinnvoll um die Tabellenfelder zu durchlaufen), und benutze eine If Abfrage um Werte in den Felder zu testen ob sie mit deinem Suchbgeriff übereinstimmen..

For i = 1 to 1000
If Sheets("Tabelle").Cells(i,1) = "Wert" Then
'mache was
End If
next i

Anzeige
AW: VBA Zeile mit Wert suchen und ändern
06.11.2022 15:12:56
MCO
Hallo!
Versuch doch mal folgendes:

Private Sub CommandButton1_Click()
dim Suchbegriff as string
dim Zelle as range
ActiveSheet.Unprotect Password:="1234"
Range("B10:B14").Locked = True
Suchbegriff = application.inputbox("Welchen Inhalt möchtest du ändern?")
set zelle = ActiveSheet.cells.find(Suchbegriff,xlwhole)
Worksheets("Offerte").Range("B10") = UserForm3.TextBox1.Value
ActiveSheet.Protect Password:="1234"
End Sub
Die andere Textbox ist meiner Meinung nach unnötig.
Leider ungetestet.
Gruß, MCO
Anzeige
Ich doof...
06.11.2022 15:14:58
MCO

Private Sub CommandButton1_Click()
dim Suchbegriff as string
dim Zelle as range
ActiveSheet.Unprotect Password:="1234"
Range("B10:B14").Locked = True
Suchbegriff = application.inputbox("Welchen Inhalt möchtest du ändern?")
set zelle = ActiveSheet.cells.find(Suchbegriff,xlwhole)
zelle.value = UserForm3.TextBox1.Value
ActiveSheet.Protect Password:="1234"
End Sub

Anzeige
AW: VBA Zeile mit Wert suchen und ändern
06.11.2022 15:43:46
Ralf
Danke erstmals, entschuldige bitte, ein Eintrag wurde nicht gespeichert.
Ich habe mit folgendem code Button erstellt um den Eintrag zu finden und dann zu speichern.
Das Endziel sollte aber sein, dass die Textbox automatisch den Eintrag anzeigt ohne einen Button zu Drücken:
habe eine Vorlage abgehändert, die suche und Füllung der Textbox sollte automatisch geschehen.

Private Sub button_text_ende_suche_Click()
Dim i%, found As Boolean
found = False
For i = 1 To Anz
If TextBox20.Value = Data(i, 1) Then
Zeile = i + 1
TextBox21.Value = Data(i, 2)
found = True
Exit For
End If
Next i
If found Then
TextBox21.Enabled = True
Range(Cells(Zeile, 1), Cells(Zeile, 2)).Select
Else
End If
End Sub

Private Sub button_text_ende_speichern_Click()
ActiveSheet.Unprotect Password:="1234"
Cells(Zeile, 1) = TextBox20.Value
Cells(Zeile, 2) = TextBox21.Value
ActiveSheet.Protect Password:="1234"
End Sub

Anzeige
Automatisch, nur mit Auslöser
07.11.2022 08:08:06
MCO
Irgendwas muss die Suche schon anstubsen.
Jetzt drückst du einen Knopf.
Wenn du das nicht willst, reicht es nicht "automatisch" zu rufen. Du musst schon bestimmen, wann der Code losrennen soll: Bei Programmstart, bei Eintrag in Zelle xy, beim Wechsel des Sheets, nur wenn HansPeter die Datei öffnet, usw.
Ohne das läuft nix automatisch.
Der Code scheint ja keine Unterstützung mehr zu benötigen, daher keinen Kommentar dazu.
Gruß, MCO
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Zeile mit Wert suchen und ändern


Schritt-für-Schritt-Anleitung

Um eine Zeile mit einem bestimmten Wert in Excel mithilfe von VBA zu suchen und zu ändern, folge diesen Schritten:

  1. UserForm erstellen: Erstelle eine UserForm, die TextBoxen für die Anzeige und Bearbeitung der Daten enthält.

  2. Code für die Anzeige: Verwende den folgenden Code in der UserForm_Initialize-Subroutine, um einen Wert in eine TextBox zu laden:

    Private Sub UserForm_Initialize()
       TextBox1.Text = Worksheets("Offerte").Range("B10").Value
    End Sub
  3. Code zum Suchen und Ändern: Füge den folgenden Code in das CommandButton1_Click-Ereignis ein, um den Inhalt zu suchen und zu ändern:

    Private Sub CommandButton1_Click()
       Dim Suchbegriff As String
       Dim Zelle As Range
       ActiveSheet.Unprotect Password:="1234"
       Suchbegriff = Application.InputBox("Welchen Inhalt möchtest du ändern?")
       Set Zelle = ActiveSheet.Cells.Find(Suchbegriff, xlWhole)
       If Not Zelle Is Nothing Then
           Worksheets("Offerte").Range("B10") = UserForm3.TextBox1.Value
       End If
       ActiveSheet.Protect Password:="1234"
    End Sub
  4. Automatische Suche: Um die TextBox automatisch zu füllen, kannst du den folgenden Code verwenden, der bei einem bestimmten Trigger ausgelöst wird:

    Private Sub button_text_ende_suche_Click()
       Dim i As Long, found As Boolean
       found = False
       For i = 1 To Anz
           If TextBox20.Value = Data(i, 1) Then
               Zeile = i + 1
               TextBox21.Value = Data(i, 2)
               found = True
               Exit For
           End If
       Next i
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Zelle nicht gefunden: Wenn der Suchbegriff nicht gefunden wird, überprüfe, ob der Wert tatsächlich in der Spalte vorhanden ist. Stelle sicher, dass die Groß- und Kleinschreibung übereinstimmt, oder passe die Find-Methode entsprechend an.

  • Schutz der Arbeitsblätter: Achte darauf, dass das Arbeitsblatt nicht geschützt ist, bevor du versuchst, Werte zu ändern. Der Unprotect-Befehl muss korrekt ausgeführt werden.


Alternative Methoden

Eine alternative Methode zur Suche in einem Excel-Arbeitsblatt könnte die Verwendung von VLOOKUP oder INDEX und MATCH sein, um den Wert zu finden. Diese Funktionen bieten eine einfache Möglichkeit, Daten zu suchen, ohne VBA zu verwenden.

Beispiel:

=VLOOKUP(A1, B1:C10, 2, FALSE)

Praktische Beispiele

Hier ist ein Beispiel, wie du den Wert in einer UserForm automatisch bei einem Ereignis ändern kannst:

Private Sub TextBox20_AfterUpdate()
    Dim i As Long
    For i = 1 To Anz
        If TextBox20.Value = Data(i, 1) Then
            TextBox21.Value = Data(i, 2)
            Exit For
        End If
    Next i
End Sub

Tipps für Profis

  • Debugging: Verwende Debug.Print in deinem Code, um den Verlauf deiner Variablen zu verfolgen und zu sehen, wo der Code möglicherweise fehlschlägt.

  • Code optimieren: Achte darauf, Code zu optimieren, indem du Schleifen und Bedingungen sorgfältig anwendest, um die Effizienz zu verbessern und die Ausführungszeit zu verkürzen.

  • Verwendung von Option Explicit: Setze immer Option Explicit am Anfang deiner VBA-Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Code nach der Bearbeitung funktioniert? Teste den Code regelmäßig während der Entwicklung, besonders nach Änderungen, um sicherzustellen, dass er wie erwartet funktioniert.

2. Was mache ich, wenn ich eine Fehlermeldung beim Ausführen des Codes erhalte? Überprüfe die Zeilen, die die Fehlermeldung auslösen, und stelle sicher, dass alle Objekte (wie Arbeitsblätter und Zellen) korrekt referenziert sind. Nutze Debug.Print, um mehr Informationen zu erhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige