Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
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

MsgBox für mehrere Bedingungen

MsgBox für mehrere Bedingungen
04.09.2020 00:28:15
FloP
Hallo Liebe Excel/VBA Experten,
zunächst wollte ich euch kurz Danke sagen. Eure Beiträge bzw. Antworten haben mir bisher super geholfen.
Ich arbeite im Qualitätsmanagement und habe mit Hilfe Euerer Beiträge und dem Makro Rekorder ein Fehlereingabeformular erarbeitet, welches grundsätzlich sehr gut funktioniert.
Allerdings bin ich jetzt irgendwie mit meinem Latein am Ende.
Damit auf jeden Fall die Artikelnummer in C3 eingegeben wird habe ich ganz am Anfang eine MsgBox eingebaut. Ich möchte aber, dass in Zelle H7 (Fehlerbeschreibung) und in Zelle K7 (Sammeln oder nicht) auch auf jeden Fall etwas eingegeben werden muss. Also im Endeffekt 3 MsgBox Abfragen hintereinander. Das bekomme ich, auch mit den Forenbeiträgen, nicht hin.
Evtl. könnt Ihr mir helfen. Hier ist das Makro:
Sub Fehlererfassen()
' Fehlererfassen Makro
If Range("c3").Value = "" Then
MsgBox "Erst Artikel eingeben!!!"
Else
Range("A7:M7").Copy
Windows("Fehlererfassung.xlsm").Activate
ActiveWorkbook.AcceptAllChanges
Sheets("Fehler Erfassung").Select
Range("A2").Select
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Save
Windows("Fehlereingabe AP1.xlsm").Activate
Sheets("Fehlereingabe").Select
Range("h7").Select
ActiveCell.FormulaR1C1 = "Bitte Fehler auswählen"
Range("i7").Select
Selection.ClearContents
Range("K7").Select
Selection.ClearContents
Range("C3").Select
Selection.ClearContents
End If
End Sub
Obwohl das Makro eigentlich einwandfrei läuft, wäre es außerdem super, wenn Ihr einfach mal drüber schauen könnt und mir evtl. Optimierungsvorschläge machen könntet, bzw. auf potentielle Gefahren hinweisen könntet, da ich, wie gesagt, meine VBA Kenntnisse nur anhand des Rekorders und des Forums im Selbststudium generiert habe.
Herzlichen Dank schon einmal im voraus.
Gruß,
Flo

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

Betreff
Datum
Anwender
Anzeige
AW: MsgBox für mehrere Bedingungen
04.09.2020 05:22:32
Matthias
Hallo,
hier (m)ein Optimierungsvorschlag
statt:
 Range("i7").Select
Selection.ClearContents
Range("K7").Select
Selection.ClearContents
Range("C3").Select
Selection.ClearContents
schreibe einfach:

Range("i7").ClearContents
Range("K7").ClearContents
Range("C3").ClearContents
oder als Einzeiler:
Range("C3,I7,K7").ClearContents
Gruß Matthias
AW: MsgBox für mehrere Bedingungen
04.09.2020 09:46:44
Pierre
Hallo Flo,
mein Vorschlag wäre, die Bearbeitung des Blattes zu sperren, bis in den 3 Zellen was eingetragen wurde.
Denn du willst ja, dass definitiv die 3 Zellen befüllt werden.
Mit deinem Code kann man einfach die nervige kleine Box wegklicken und kann dann machen, was man will.
Das könnte dann nach diesem Prinzip laufen:
With Range("C3")
If .Value = "" Then                                  'Wenn dieser Wert in Zelle,
Application.EnableEvents = False             'dann Blatt sperren
.Select                                      'Zelle bleibt ausgewählt
Application.EnableEvents = True              'Blatt freigeben
End If
End With
Analog dann für H7 und K7.
Das ist jetzt natürlich nur für eine Zelle.
Aber vielleicht gefällt dir das ja?
Gruß Pierre
Anzeige
Als Schleife ...
04.09.2020 10:13:24
Pierre
Hallo nochmal,
so kann das als Schleife aussehen:

Dim Zelle As Range
For Each Zelle In Range("K7, H7, C3")
If IsEmpty(Zelle) Then
Application.EnableEvents = False
Zelle.Select
Application.EnableEvents = True
End If
Next Zelle
Ist die kürzere Variante, als für jede Zelle einen kompletten "With"-Block zu basteln.
Gruß Pierre
AW: Als Schleife ...
04.09.2020 16:56:46
FloP
Hallo,
Danke Matthias und Pierre für die Antworten.
@ Pierre,
der Ansatz gefällt mir. Ich bin aber glaub ich zu doof. Wo muss ich denn die Schleife einbauen das es funktioniert?
Wenn ichs an den Anfang meines Makros (in Modul 1) schreibe passiert nix. Habe auch probiert es bei Objekt (Diese Arbeitsmappe) einzutragen aber passiert auch nix.
Gruß, Flo
Anzeige
AW: Als Schleife ...
07.09.2020 09:18:54
Pierre
Hallo Flo,
sorry, ich war am Wochenende nicht hier unterwegs, hoffe, du wirst es dennoch lesen.
Hier mal das gesamte Makro:

'einfügen bei der Tabelle, bei der das Makro laufen soll
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'sorgt dafür, dass die im Code angegebenen Zellen nacheinander gesperrt bleiben, bis diese  _
einen anderen
'Zellwert haben, als im Code angegeben!
Dim Zelle As Range
For Each Zelle In Range("K7, H7, C3")          'Zellen evtl. anpassen! Umgekehrte Reihenfolge!
If IsEmpty(Zelle) Then                     'Wenn Zelle leer,
Application.EnableEvents = False       'dann Blatt "sperren"
Zelle.Select                       'o. a. Zelle bleibt ausgewählt, bis Wert anders
Application.EnableEvents = True        'erst dann Bearbeitung möglich!
End If
Next Zelle
End Sub

Einfügen unter dem Tabellenblatt, in dem die Sperrung erfolge soll (bei mir einfach "Tabelle1").
Gruß Pierre
PS: Ich mache nur auf offen, damit Flo das hoffentlich liest.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige