MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 15.03.2019, 10:00   #1
janklue
Neuer Benutzer
Neuer Benutzer
Standard Excel2010 - Text/Comboboxen in Abhängigkeit von einander prüfen

Hallo zusammen,

ich sitze gerade an einem Makro, das über eine Userform Daten in eine Tabelle schreiben soll.

Die Userform hat 8 Textboxen und 8 Comboboxen, wobei immer 2 Textboxen und 2 Comboboxen zusammen gehören und einen Eintrag bilden, also 4 "Datensätze" insgesamt.

Beim drücken auf Ok würde ich gerne prüfen, welche Boxen gefüllt sind. Ist eine der vier Boxen aus einer Reihe gefüllt, müssen die anderen 3 auch gefüllt sein. Sind alle vier Boxen aus einer Reihe leer, ist das auch ok. Sind nicht alle vier gefüllt, soll eine Fehlermeldung kommen.

Gibt es eine einfache Möglichkeit, direkt alle vier in Abhängigkeit von einander auf einmal zu prüfen? Mir fällt sonst nur ein, das ganze durch eine Verkettung von If-Abfragen zu machen, aber das würde ja sehr umständlich und unübersichtlich werden.

Vielen Dank schonmal und viele Grüße,

Jan
janklue ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 10:23   #2
Beverly
MOF Guru
MOF Guru
Standard

Hi Jan,

du kannst in einer Schleife über alle Textboxen laufen. Wie sind die TextBoxen denn benannt - heißen sie TextBox1, TextBox2 usw. oder hast du sie umbenannt? Gibt es noch andre TextBoxen, die nicht geprüft werden sollen?
Am einfachsten ist es, wenn du eine Beispielmappe hochlädst.


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 11:23   #3
janklue
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hey,
vielen Dank für deine Antwort.

Ich habe mal ein Bild der Userform angehängt zur Verdeutlichung:



Ich muss dazu sagen, dass die Userform eigentlich über Outlook gestartet wird. Anhand der Eintragungen in den 3 Feldern oben wird dann eine Exceltabelle geöffnet, und nach Datum und Kürzel durchsucht. Alle dazu vorhandenen Daten (max. vier Eintragungen) werden dann in die Userform eingeladen und können bearbeitet werden. Beim speichern sollen die Werte in der Exceltabelle dann überschrieben werden (klingt evtl etwas umständlich, ist aber leider notwendig). Daher habe ich das ganze hier unter Excel gepostet.

Eine Mappe hochladen klappt wegen dieser Kombination nicht und bisher existiert auch noch kein Code zu meiner Fragestellung.

Hier mal mögliche Szenarien und was passieren soll:

1. Alle vier Boxen einer Zeile (zB. Textbox3, Textbox4,Combobox2 und Combobox3) sind gefüllt. Die Überprüfung soll ergeben, dass alle vier gefüllt sind und das Makro läuft danach weiter.

2. Textbox3, Textbox4 und Combobox2 sind gefüllt, aber Combobox3 nicht. Die Überprüfung soll ergeben, das eine der vier Boxen nicht gefüllt ist, daher kommt eine Msgbox mit einem Hinweis. Das Makro soll erstmal nicht weiterlaufen. Das gleiche soll gelten, wenn nur 1 oder 2 der Boxen gefüllt sind.

3. Alle vier Boxen einer Zeile sind leer. Dies wird bei der Überprüfung erkannt und ist okay. Die Zeile wird danach nicht mehr berücksichtigt.

Wie ich einzelne Textboxen und Comboboxen überprüfe weiß ich. Damit wird die Überprüfung aber sehr umständlich. Meines Wissens nach müsste ich dann nach der Prüfung der ersten Textbox für die anderen drei auch nacheinander jeweils eine Ifabfrage machen. Aber es könnte ja auch sein, dass die erste Textbox leer ist, aber die zweite gefüllt. Damit ergeben sich dann ja sehr viele Möglichkeiten. Es stellt sich für mich daher die Frage, ob man statt mehrerer einzelner Prüfungen mit If nacheinander auch eine Abfrage für alle vier gleichzeitig machen kann.

Ich hoffe das Problem ist jetzt etwas klarer,

VG Jan
janklue ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 11:56   #4
janklue
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich habe gerade herausgefunden, dass man mehrere Bedingungen mit And verknüpfen kann und das die Abfrage dann nicht abhängig von der Reihenfolge ist. Ich glaube damit hat sich meine Frage geklärt. Trotzdem vielen Dank für die Hilfe

Hier meine Umsetzung:

If TextBox3.Value = "" And TextBox4.Value = "" And ComboBox2.Value = "" And ComboBox3.Value = "" Then
'Zeile wird ab hier ignoriert
Else
If TextBox3.Text <> "" And TextBox4.Text <> "" And ComboBox2.Text <> "" And ComboBox3.Text <> "" Then
'Werte in Variablen speichern und damit weiterarbeiten
Else
'Fehlermeldung wenn nicht vollständig
MsgBox "Alle Felder einer Zeile müssen ausgefüllt sein!"
End If
End If

Viele Grüße,
Jan
janklue ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 12:08   #5
mrcojanes
MOF User
MOF User
Standard

Hi,

hier mal eine Lösung, die angepasst werden muss. Aber vielleicht hilft es dir weiter.
Code:

    
      For c = 1 To XXXX 'Anzahl TextBoxen eintragen
            If Me.Controls("TextBox" & CStr(c)).Text = "" Then
                o = 1
                Exit For   
    Next c
        
    If o = 1 Then
        MsgBox "Bitte alle Felder füllen!", vbExclamation, "Hinweis"
        o = 0
        Exit Sub
End If
End If

__________________

Gruß
MrCojanes


Let us make my Karma great again!

Geändert von mrcojanes (15.03.2019 um 12:16 Uhr).
mrcojanes ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 16:38   #6
Storax
MOF Koryphäe
MOF Koryphäe
Standard

Ich bezweifele zwar, dass Dir dieser Lösungsansazu weiterhelfen wird, da Du gerade erst das boolsche AND entdeckt hast, aber für die Nachwelt.

Ich würde mit einer Klasse arbeiten, die ich mal cCtrCol geannt habe und wie folgt aussieht:
Code:

Option Explicit

Dim mCol As New Collection

Sub add(ctrl As Control)
    mCol.add ctrl
End Sub

Function isEmpty() As Boolean

Dim i As Long
Dim res As Boolean

    res = True
    For i = 1 To mCol.Count
        If Len(mCol(i).Value) > 0 Then
            res = False
            Exit For
        End If
    Next i
    isEmpty = res

End Function

Function isFilled() As Boolean

Dim i As Long
Dim res As Boolean

    res = True
    For i = 1 To mCol.Count
        If Len(mCol(i)) = 0 Then
            res = False
            Exit For
        End If
    Next
    isFilled = res
End Function
Der Code in der Userform sieht dann wie folgt aus
Code:

Option Explicit

Dim myCtrl() As New cCtrCol

Private Sub CommandButton1_Click()

Dim i As Long
    For i = LBound(myCtrl) To UBound(myCtrl)
        If myCtrl(i).isEmpty Then
        Else
            If Not myCtrl(i).isFilled Then
                MsgBox "Please fill line " & i
            End If
        End If

    Next i

End Sub

Private Sub UserForm_Initialize()
    ReDim myCtrl(1 To 3)
    myCtrl(1).add TextBox1
    myCtrl(1).add TextBox2
    myCtrl(1).add ComboBox1
    myCtrl(2).add TextBox3
    myCtrl(2).add TextBox4
    myCtrl(2).add ComboBox2
    myCtrl(3).add TextBox5
    myCtrl(3).add TextBox6
    myCtrl(3).add ComboBox3
End Sub

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.