Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

UserForm Erklärung

Betrifft: UserForm Erklärung von: Regne
Geschrieben am: 01.08.2014 06:55:35

Guten Morgen,
Hier nochmal mein Problem von gestern. Ich probiere es mal mit einem Bild und einer Erklärung dazu. Hier erstmal das Bild https://www.herber.de/bbs/user/91822.jpg

So nun die Erklärung.
Wenn speichern gedrückt wird soll er die letzte Zeile in der Tabelle raussuchen.
TextBox25,TextBox26 und ComboBox19 bleiben in jeder Zeile gleich.
Nun soll er überprüfen ob in Combobox1 was steht und dann prüfen ob Textbox1 und Combobox7 und Combobox13 und TextBox19 auch ausgefüllt sind.
Wenn er das überprüft hat soll er die nächste Zeile überprüfen und übertragen. Immer wenn in der ersten ComboBox was steht sollen die anderen Bereiche überprüft werden und dann sollen die ausgefüllten Bereiche in die Tabelle übernommen werden.

  

Betrifft: AW: UserForm Erklärung von: Beverly
Geschrieben am: 01.08.2014 08:01:27

Hi,

deine Beschreibung ist nicht ganz eindeutig. Ich nehme an, dass in dem Fall, wenn der Inhalt der ComboBox1 in Spalte A gefunden wird, die Daten in die betreffenden Zeile übernommen werden sollen und wenn de r Inhalt nicht gefunden wird, dann in die erste freie Zeile (weshalb sonst die letzte Zeile ermitteln?).

Private Sub CommandButton1_Click()
   Dim lngZeile As Long
   Dim rngZelle As Range
   Dim lngLetzte As Long
   If ComboBox1 Then
      If TextBox1 <> "" And combobox7 <> "" And combobox13 <> "" And TextBox19 <> "" Then
         Set rngZelle = Columns(1).Find(ComboBox1, lookat:=xlWhole)
         If Not rngZelle Is Nothing Then
            Cells(rngZelle.Row, 2) = TextBox1
            Cells(rngZelle.Row, 3) = ComBoox7
            Cells(rngZelle.Row, 4) = ComBox13
            Cells(rngZelle.Row, 5) = TextBox19
         Else
            lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), _
               Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
            Cells(lngLetzte + 1, 2) = TextBox1
            Cells(lngLetzte + 1, 3) = ComBoox7
            Cells(lngLetzte + 1, 4) = ComBox13
            Cells(lngLetzte + 1, 5) = TextBox19
         End If
      End If
   End If
   Set rngZelle = Nothing
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: UserForm Erklärung von: Regne
Geschrieben am: 01.08.2014 08:21:06

Also es sollte die erste freie Zeile natürlich sein...
Jedoch gibt es keine Schleifen Funktion welche Zeile für Zeile überprüft ob was eingetragen ist oder nicht?


  

Betrifft: AW: UserForm Erklärung von: Beverly
Geschrieben am: 01.08.2014 09:00:29

Ich verstehe leider dein Anliegen nicht - was soll Zeile für Zeile geprüft werden ob es vorhanden ist oder nicht? Was mein Code macht, hatte ich im vorhergehenden Beitrag schon geschrieben und da du nicht deine Mappe sondern nur ein Bild (mit dem Excel nichts anfangen kann) hochgeladen hast, war dies die einzige Interpretation, die ich deiner Fragestellung entnehmen konnte.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: UserForm Erklärung von: Robert
Geschrieben am: 01.08.2014 09:11:27

Hallo Regne...

Sachen gibts, die gibts garnicht!
Schleife über alle Zeilen, um was zu überprüfen? das geht natürlich, ist garnicht mal so schwer.

Es ist immer hilfreich (ohne dir zu nahe treten zu wollen) nicht mit einer Lösungsidee zu kommen oder sogar schon Möglichkeiten zu verwerfen (siehe Zeilenschleife), wenn man das Potential von VBA und Excel noch nicht voll umreißen kann.

Besser ist es, die gewünschte Aktion deutlich zu erklären.
In deinem Fall scheint der Fall ein wenig schwer zu erklären zu sein, deswegen gebe ich Beverly Recht, eine Beispielmappe wäre in dem Fall Gold wert.

Fragen die sich mir stellen?
Welche Zellen sollen auf Welche Werte Welcher Combobox (oder Textbox?) überprüft werden?
Das Bild ist irgendwie wenig hilfreich.

Viele Grüße und nix für ungut
Robert


  

Betrifft: AW: UserForm Erklärung von: Regne
Geschrieben am: 01.08.2014 09:33:53

Also mit dieser Userform sollen Daten erfasst werden, es können alle 6 Zeilen der Userform ausgefüllt werden müssen jedoch nicht. Wenn jetzt die erste Spalte der Comboboxen ausgeüllt ist soll immer überprüft werden ob die zweite Spalte mit den Textboxen und die Combobox in der vierten spalte und die letzte Spalte mit der Textbox in dieser Zeile auch ausgefüllt ist... wenn dort alles ausgefüllt ist sollen die ausgefüllten Bereiche in die Tabelle eingetragen werden wenn was fehlt soll eine Fehlermeldung kommen.
Hier meine Datei wie ich es momentan mache allerdings übernimmt er dort alle Felder und nicht nur die ausgefüllten geschweige denn kommt eine Fehlermeldung.
https://www.herber.de/bbs/user/91801.xls

Vielen Dank für euer Bemühen


  

Betrifft: AW: UserForm Erklärung von: Robert
Geschrieben am: 01.08.2014 10:37:16

Okay.. so langsam kommen wir der Sache näher

Wenn du Überprüfen willst ob alle Felder ausgefüllt sind dann solltest du statt ElseIf (das ja aufhört, wenn eine der Bedingungen stimmt) deine If Klauseln verschachteln.

z.B. so:

If ComboBoxSpalte1 <> "" Then
    If TextBoxSpaltex <> "" And ComboBoxSpalteY <> "" And ComboBoxSpalteZ <> "" Then
        'Deine Aktion hier
    Else
        MsgBox "Bitte überprüfen sie Ihre Eingaben"
    End If
End If
Hier werden, sofern in der ersten Combobox was steht, die anderen Eingabefelder überprüft.
Wenn alle einen solchen Eintrag haben, läuft eben dein Code
Wenn eines der Eingabefelder leer ist, gibt es eine Meldung
Wenn die erste Combobox leer ist, passiert gar nichts.

Den Code oben musst du bezüglich der Comboboxbezeichnungen und dem auszuführenden Code wenn all Felder gefüllt sind noch anpassen.
So wie er jetzt da steht, bräuchtest du einen solchen Codeblock für jede Zeile von Eingabefeldern.

Viele Grüße
Robert


  

Betrifft: AW: UserForm Erklärung von: Regne
Geschrieben am: 01.08.2014 10:44:32

Es gibt also nicht die Möglichkeit mit der MSGBox auf die ComboBox1 explizit hinzuweisen?
z.B. ComboboxZ ist leer Bitte ComboBoxz überprüfen...
Und es gibt auch keine Schleife die Zeile für Zeile in der Userform durchläuft?


  

Betrifft: AW: UserForm Erklärung von: Robert
Geschrieben am: 01.08.2014 11:26:39

Hallo,

beides geht.
Das mit der passenden Fehlermeldung ist einfacher als die Schleife.
Für explizite Fehlermeldungen im Code oben statt der universalen MSGbox für jede option eine If Schleife einbauen.

If ComboBoxSpalte1 <> "" Then
    If TextBoxSpaltex <> "" And ComboBoxSpalteY <> "" And ComboBoxSpalteZ <> "" Then
        'Deine Aktion hier
    Else
        If Combobox1 <> "" Then MsgBox "Combobox1 leer"
        If Combobox2 <> "" Then MsgBox "Combobox2 leer"
        If Combobox3 <> "" Then MsgBox "Combobox3 leer"
    End If
End If
Eine schleife über die Controlboxen macht nur Sinn wenn sie entsprechend benannt sind (aufeinanderfolgende nummern) und ist unnötig komplex.
Bei bis zu 3 Zeilen würde ichs vermutlich einfach untereinander schreiben.

Viele Grüße Robert


 

Beiträge aus den Excel-Beispielen zum Thema "UserForm Erklärung"