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

Öffnen eines Formulars mit Daten oder leer öffnen

Forumthread: Öffnen eines Formulars mit Daten oder leer öffnen

Öffnen eines Formulars mit Daten oder leer öffnen
29.09.2019 17:41:38
Carsten
Hallo,
ich bin ein absoluter Neuling noch, was VBA usw angeht. Ich habe 2 Formular. Als erstes öffnet sich ein Suchformular (userform1), der besteht bisher aus einer textbox1 und 2 Commandobutton "Ok" und "Abbrechen". Ein dritter Commandobutton mit "neu" soll noch hinzu kommen. Das 2 Formular mit den Daten steht schon..
Ich möchte über einen den Button "Ok" in der Userform 1 sowohl Zeichen, als auch Zahlen im Tabellenblatt suchen lassen und danach sollen die Daten im Formular 2 (userfom2) zu sehen sein. Ich habe hier einen Code gefunden, wo es mit Werten gut funktioniert. Doch wie muss ich diesen Code umbauen? Der Ablauf soll gleich bleiben, auch was die Message angeht. Außerdem möchte ich einen Commandobutton zusätzlich mit den Befehl "neu in der Userform1 bauen und dann soll sich in userform2 ein leeres Formular ohne Inhalt öffnen.
Hier der Code für den Commandobutton "Ok":

Private Sub CommandButton1_Click()
'Öffne Daten des Kurses
Dim x As Integer
Z = Sheets(1).UsedRange.Rows.Count
x = TextBox1
temp = 0
'Schleife Kurs. vorhanden oder nicht
For i = 2 To Z
If Cells(i, 1) = x Then
temp = 1
'Schleife beenden
Exit For
End If
Next
If temp = 1 Then
Unload Me
'globale Variable
zeile = i
'Öffne Daten des Kurses
UserForm2.Show
Else
'Messagebox öffnen
MsgBox "Kurs nicht vorhanden!", vbExclamation
'Userform1 Kurssuche Archiv bleibt weiter geöffnet
TextBox1 = "" 'textbox1 wieder leer
End If
End Sub

Ich freue mich auf Eure Hilfe.
LG Carsten
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Öffnen eines Formulars mit Daten oder leer öffnen
29.09.2019 17:57:51
Hajo_Zi
Hallo Carsten,
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.

AW: Öffnen eines Formulars mit Daten oder leer öffnen
29.09.2019 18:41:57
Regina
Hi,
die Datei wäre schon hilfreich ...
ich verstehe noch nicht so ganz, was bei dem Code nicht in Deinem Sinne funktioniert, was also umzubauen ist.
Die Schaltfläche Neu müsste das UserForm2 öffnen vorher könnte man die Variable zeile auf 0 setzen. Im UserForm2 könnte dann z.B. im Initialize-Ereignis beispielsweise abfragen, ob zeile =0 ist. Wenn ja, Formular leer öffnen, sonst die Daten aus zeile laden.
Aber ohne Datei kann man nur in die Kristalkugel schauen :-))
Gruß
Regina
Anzeige
AW: Öffnen eines Formulars mit Daten oder leer öffnen
29.09.2019 19:43:48
Regina
Hi,
dann schau Dir mal an, ob das passt:
https://www.herber.de/bbs/user/132281.xlsm
ich habe deinen Code mal etwas aufgeräumt, 52 Textboxen kann man eleganter in einer Schleife füllen und leeren. Außerdem solltest Du Cells nich ohne Angabe des Tabellenblattes benutzen, sonst sprichst Du immer fdas aktive Blatt an und das ist in deinem Fall das Blatt mit der Schaltfläche.
Wenn Du jetzt im UserForm1 auf Neu klickst, öffnet sich das leere Userform2. Hier muss Du folgendes noch überdenken:
Deine jetzige Speichernschaltfläche hat bisher 2 Funktionen:
1. Wenn alle Textfelder leer, wird der geladene Datensatz geöscht
2. sonst, werden die veränderten Daten zurück geschrieben
Du müsstest hier dann noch "zeile" abfragen: hat die Variable den Wert 0 wurde ein neuer Datensatz erfasst, dann müssen in die erste leere Zeile der Archivliste die neuen Werte eingetragen werden. Versuch mal, ob Du das umgesetzt bekommst. Sonst melde Dich nochmal.
gruß
Regina
Anzeige
AW: Öffnen eines Formulars mit Daten oder leer öffnen
29.09.2019 20:02:11
Carsten
Vielen Dank!
Das hat mir schon echt geholfen! Auch die Vereinfachung der Codes. Dadurch schon echt viel gelernt.
Ich bin echt noch sehr neu und manches ist noch unverständlich für mich.
Soweit klappt es jetzt, aber wenn ich das Formular über neu öffne und ich möchte einen weiteren Kurs anlegen, dann klappt es nicht. Außerdem war es auch mein Fehler, denn der Kurs soll nicht durch Werte gesucht werden, sondern durch text und Zahlen, z.B. Bsp "Erz bb 1"
Vielen Dank für eine weitere Hilfe
Anzeige
AW: Öffnen eines Formulars mit Daten oder leer öffnen
29.09.2019 20:10:26
Regina
...ok, dann darf x nicht vom Typ Integer sein, da sinbd nur Zahlen zulässig. Hier muss dann string genommen werden (UserForm1, OK-Button)
Das Speichern neuer Sätze habe ich Dir in UserForm2 auch eingebaut. Hinter dem Speichern-Button wird zeile abgefragt. Wenn in zeile eine 0 steht, handelt es sich um einenneuen Datensatz und es muss die erste leere Zeile ermittelt werden, bevor ins Blatt geschrieben wird.
https://www.herber.de/bbs/user/132282.xlsm
Gruß
Regina
Anzeige
AW: Öffnen eines Formulars mit Daten oder leer öffnen
29.09.2019 20:31:42
Carsten
Vielen Dank!
Du hast mir echt geholfen und ich habe sehr viel dazu gelernt.
Schönen Abend noch
;
Anzeige
Anzeige

Infobox / Tutorial

Formular in Excel öffnen: So geht's mit VBA


Schritt-für-Schritt-Anleitung

  1. Erstellen der UserForms:

    • Du benötigst zwei UserForms: UserForm1 für die Suche und UserForm2 für die Anzeige oder Eingabe von Daten.
    • Füge in UserForm1 eine TextBox (TextBox1) und zwei CommandButtons (CommandButton1 für "Ok", CommandButton2 für "Abbrechen") hinzu. Füge auch einen dritten Button CommandButton3 für "Neu" hinzu.
  2. Code für den "Ok"-Button:

    • Dieser Button sollte den eingegebenen Wert in TextBox1 suchen und bei Erfolg die Daten in UserForm2 anzeigen. Hier ist ein Beispiel:
    Private Sub CommandButton1_Click()
       Dim x As String
       Dim Z As Integer
       Dim temp As Integer
       Z = Sheets(1).UsedRange.Rows.Count
       x = TextBox1.Value
       temp = 0
    
       For i = 2 To Z
           If Cells(i, 1).Value = x Then
               temp = 1
               Exit For
           End If
       Next
    
       If temp = 1 Then
           Unload Me
           zeile = i
           UserForm2.Show
       Else
           MsgBox "Kurs nicht vorhanden!", vbExclamation
           TextBox1.Value = ""
       End If
    End Sub
  3. Code für den "Neu"-Button:

    • Setze im Code des "Neu"-Buttons die Variable zeile auf 0, bevor UserForm2 geöffnet wird:
    Private Sub CommandButton3_Click()
       zeile = 0
       UserForm2.Show
    End Sub
  4. Initialize-Ereignis in UserForm2:

    • Füge im UserForm2-Code ein Initialize-Ereignis hinzu, um zu entscheiden, ob ein neuer Datensatz oder ein existierender geladen wird:
    Private Sub UserForm_Initialize()
       If zeile = 0 Then
           ' Formular leer öffnen
       Else
           ' Daten aus zeile laden
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Kurs nicht vorhanden!":

    • Überprüfe, ob der eingegebene Text in TextBox1 korrekt ist und ob die Daten im richtigen Format gespeichert sind.
  • Fehler beim Öffnen von UserForm2:

    • Stelle sicher, dass das Unload Me im "Ok"-Button vor dem UserForm2.Show steht, um sicherzustellen, dass das erste Formular geschlossen wird.

Alternative Methoden

  • Anstatt VBA zu verwenden, könntest Du auch auf Excel-Formeln oder Filteroptionen zurückgreifen, um Daten schnell zu suchen. Diese Methoden sind jedoch nicht so dynamisch wie ein VBA-Formular.

Praktische Beispiele

  1. Eingabe eines neuen Datensatzes:

    • Wenn Du auf "Neu" klickst, wird UserForm2 mit leeren Feldern geöffnet, um einen neuen Kurs anzulegen.
  2. Suche nach Text und Zahlen:

    • Du kannst in TextBox1 sowohl Text (z.B. "Erz bb 1") als auch Zahlen eingeben, um die Suche zu erleichtern.

Tipps für Profis

  • Benutze Arrays für bessere Performance:

    • Anstatt in einer Schleife über die Zellen zu iterieren, kannst Du die Daten in ein Array laden und die Suche dort durchführen.
  • Fehlerbehandlung:

    • Implementiere Fehlerbehandlung in Deinem VBA-Code, um unerwartete Fehler elegant zu handhaben.

FAQ: Häufige Fragen

1. Wie kann ich das Formular beim Öffnen leer lassen? Um das Formular leer zu lassen, setze die Variable zeile auf 0, bevor Du UserForm2 öffnest.

2. Wie suche ich nach Text oder Zahlen im Formular? Stelle sicher, dass die Variable x als String deklariert ist, damit sowohl Text als auch Zahlen verarbeitet werden können.

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