Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
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
Inhaltsverzeichnis

VBA Kürzung

VBA Kürzung
28.07.2023 13:32:46
Pascal
Hallo liebe Leute,

vorneweg es funktioniert.

Ich habe einen Code den ich nur als Plump bezeichnen kann. Er macht was er soll und darüber bin ich heilfroh =). Hat auch eine ganze weile gebraucht bis es soweit war.
Habe keine passende Funktion gefunden oder mir für mein Vorhaben umdenken können.
Jetzt möchte ich natürlich dazu lernen und frage euch deshalb, wie man es richtig angehen könnte.

Ziel:
Wenn in Spalte A etwas eingetragen wurde und die Nachbarzelle in Spalte B leer ist, soll er einen Hinweis herausgeben werden
Also (A1= "rote Rosen", B1="") = Fehlermeldung
Jetzt soll natürlich nur eine Fehlermeldung herausgegeben werden, egal wieviele Fehler drinn sind... muss man sonst ja im schlimmsten Fall 20 Hinweisfenster wegdrücken =D

Sub fehlermeldung()

Dim X_fehler_Stückzahl As Integer
Dim X_fehler_dauer As Integer

X_fehler_Uhrzeit = False
X_fehler_dauer = False

If Worksheets("Tabelle1").Range("I5") > "" And Worksheets("Tabelle1").Range("J5") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I6") > "" And Worksheets("Tabelle1").Range("J6") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I7") > "" And Worksheets("Tabelle1").Range("J7") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I8") > "" And Worksheets("Tabelle1").Range("J8") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I9") > "" And Worksheets("Tabelle1").Range("J9") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I10") > "" And Worksheets("Tabelle1").Range("J10") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I11") > "" And Worksheets("Tabelle1").Range("J11") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I12") > "" And Worksheets("Tabelle1").Range("J12") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I13") > "" And Worksheets("Tabelle1").Range("J13") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I14") > "" And Worksheets("Tabelle1").Range("J14") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I15") > "" And Worksheets("Tabelle1").Range("J15") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I16") > "" And Worksheets("Tabelle1").Range("J16") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I17") > "" And Worksheets("Tabelle1").Range("J17") = "" _
Then X_fehler_Stückzahl = True
If Worksheets("Tabelle1").Range("I23") > "" And Worksheets("Tabelle1").Range("J23") = "" _
Then X_fehler_dauer = True
If Worksheets("Tabelle1").Range("I24") > "" And Worksheets("Tabelle1").Range("J24") = "" _
Then X_fehler_dauer = True
If Worksheets("Tabelle1").Range("I25") > "" And Worksheets("Tabelle1").Range("J25") = "" _
Then X_fehler_dauer = True
If Worksheets("Tabelle1").Range("I26") > "" And Worksheets("Tabelle1").Range("J26") = "" _
Then X_fehler_dauer = True

If X_fehler_Stückzahl = True Then MsgBox "Stückzahl fehlt", vbInforsmation + vbOKOnly, "Bitte eintragen"
If X_fehler_dauer = True Then MsgBox "Dauer fehlt", vbInforsmation + vbOKOnly, "Bitte eintragen"

End Sub

Eine einfach OR verkettung habe ich nicht hinbekommen.
Die Variablen X_fehler_Stückzahl und X_fehler_dauer haben erst funktioniert, als sie als integer deklariert war. Warum? true/false schreit doch nach boolian oder?
Auch mein beschränktes Verständniss von IF, Elseif, Else und End If ist hart auf die Probe gestellet worden siehe Bild
Die Variablen setze ich anfangs auf false, damit beim neustart, resetten, wiederherstellen, was auch immer sicher bin keine Falschpositivantwort zu bekommen. Ist das unnötig?

Vielen lieben Dank und ein schönes Wochenende allen.
Pascal
Userbild

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Kürzung
28.07.2023 19:12:02
Piet
Hallo

man kann die Aufgabe auch mit With Klammer und For Next Schleife lösen. Hier mal ein Beispiel.

mfg Piet

  • Sub test()
    With Worksheets("Tabelle1")
    For j = 5 To 17
    If .Cells(j, 9) > "" And .Cells(j, 10) = "" Then
    MsgBox "Stückzahl fehlt in Zeile: " & j & " Bitte eintragen"
    End If
    Next j
    For j = 23 To 26
    If .Cells(j, 9) > "" And .Cells(j, 10) = "" Then
    MsgBox "Dauer fehlt in Zeile: " & j & " Bitte eintragen"
    End If
    Next j
    End With
    End Sub
  • Anzeige
    AW: VBA Kürzung
    31.07.2023 08:05:03
    Pascal
    Hallo Piet,

    danke für deine Lösung. Hier komme ich mit meinem Verständniss auch besser mit =).
    Außerdem ist es eine super Idee die Fehlerzeile auszugeben. Top.

    Kann erst heute Nachmittag testen.

    Schönen Wochenstart
    AW: VBA Kürzung
    28.07.2023 13:46:59
    daniel
    Hi

    es ist immer schwierig, das problem zu erkennen oder eine Lösung zu formulieren, wenn beschreibung und versuchte Lösung nicht zueinander passen.
    wenn du also in der Beschreibung die Spalten A und B verwendest und im Code I und J, ja was gilt denn dann?
    Denkt der Frageschreiber auch mal mit der schreibt er nur irgendwas?

    ich mach den Code daher nur mal ganz allgemen:

    if Worksheetfunction.Countifs(Range(...), ">", Range(...), "=") > 0 Then Msgbox "Fehler"


    dann bekommst du eine Fehlermeldung, wenn im ersten Zellbereich eine Zelle befüllt ist um im zweiten Zellbereich die Zelle in der entsprechenden Zeile leer ist.
    Gruß Daniel
    Anzeige
    AW: VBA Kürzung
    28.07.2023 14:48:50
    Pascal
    Hallo Daniel,

    hat super funktioniert Danke Dir!
    Bin immer wieder überrascht wie schnell einem hier geholfen wird Probleme pragmatisch zu lösen. Gerade deinen Namen lese ich total oft hier. Daher von mir einen Extradank in deine Richtung.
    Würde gerne wissen, was ihr alle so für beruflichen Background habt.

    Allerdings nehme ich das mit der sehr allgemeingültigen Beschreibung, die nicht 1:1 dem Code enstpricht natürlich auf meine Kappe und gebe dir recht, aber mit aller Nettichkeit, pampig musst du nicht werden. Ich gelobige auch Besserung.

    Das tut meiner Dankbarkeit aber keinen Abbruch.

    Dir ein schönes Wochenende
    Pascal
    Anzeige
    AW: VBA Kürzung
    28.07.2023 15:19:58
    daniel
    Auf Nettigkeiten wird selten reagiert, manchmal muss man ein bisschen provozieren.

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige