Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1464to1468
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 Excel mit MSG BOX

VBA Excel mit MSG BOX
17.12.2015 11:32:04
ALI
Hallo,
ich habe folgende herausforderung.
Ich habe eine Einsatzplan mit mehreren LKW.
NAME Tag1 Tag2 Tag3 Tag4 Tag5
LKW1 10:00 10:00 11:00 11:00 11:00
LKW2 10:00 10:00 11:00 11:00 11:00
LKW3
Links stehen die LKW´s 1 - 3 in der Spalte.
Jetzt möchte ich, wenn in der Zeile LKW1 jemand 1x 10:00 Uhr eingetragen hat, eine Meldung MSGBOx ausgeworfen wird. Sollte LKW1 jetzt nochmal eine 10:00 Uhr eintragen, kommt eine weiter MSGbox.
das gleiche sollte für LKW2 und auch LKW3 passieren.
die unterschiedlichen MSG Boxen würde ich dann in ein Modul packen. Das bekomme ich noch hin.
es sollte immer so heissen, wenn LKW1 die 10:00 =1 dann MSG BOX 1, wenn LKW1 die 10:00 =2 dann MSG Box 2.
Das gleiche auch für LKW2 und LKW3
Könntet Ihr mir helfen?
LG

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachgefragt..
17.12.2015 11:47:31
UweD
Hallo
verstehe die Logik noch nicht.
Also wenn bei einem LKW an unterschiedlichen Tagen, aber die gleiche Uhrzeit eingetragen wird, dann Hinweis?
Was ist, wenn der Erste Eintrag erfolgt. Dann auch Hinweis?
LG UweD

AW: Nachgefragt..
17.12.2015 11:57:24
ALI
Hallo Uwe,
genau, als Beispiel:
LKW1 trägt das erste Mal 10:00 ein = MSGBOX "Super, eine weiter fehlt noch".
Jetzt trägt LKW1 das zweite Mal eine 10:00 Uhr ein = MSGBOX "Sauber, alles erfüllt".
Jetzt trägt LKW2 das erste Mal 10:00 Uhr ein = MSGBOX "Super, eine weitere fehlt noch".....
LG

AW: Nachgefragt..
17.12.2015 12:27:05
UweD
Hallo nochmal
- Rechtsclick auf den Tabellenblattreiter unten
- Code anzeigen
- Makro reinkopieren
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim R&, LC%
If Target.Row > 1 And Target.Column > 1 Then
If Target.Count = 1 Then
R = Target.Row
LC = Cells(R, Columns.Count).End(xlToLeft).Column 'letzte Spalte der Zeile
Select Case WorksheetFunction.CountIf(Range(Cells(R, 2), Cells(R, LC)), Target)
Case 1
MsgBox "Super, eine weiter fehlt noch"
Case 2
MsgBox "Sauber, alles erfüllt"
Case Is > 2
MsgBox "Das war zu viel des Guten"
End Select
Else
MsgBox "Nur eine Zelle bearbeiten"
End If
End If
Err.Clear
Fehler:
If Err.Number  0 Then _
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß UweD

Anzeige
AW: Nachgefragt..
17.12.2015 12:42:08
ALI
Hallo Uwe,
erstmal vielen Dank, es klappt soweit super:)
jetzt wirft mir Excel aber bei jeder Bearbeitung einer Zelle eine Meldung.
Das heisst wenn ich z.B.
Bei LKW1 eine 10:00 eingebe, erscheint die Meldung "Super, eine weitere fehlt noch", bie der zweiten 10:00 Uhr erscheint "Sauber, alles erfüllt", bei der dritten 10 Uhr erscheint "das war zu viel des guten".
das ist erstmal Genial:) Danke!
Nur wenn jetzt jemand statt 10:00 Uhr 09:00 Uhr eingeben will, erscheinen die Meldungen auch. Ich würde es gerne nur für diese eine Uhrzeit begrenzen?
LG

Anzeige
AW: Nachgefragt..
17.12.2015 12:52:06
UweD
Es wurde immer das Vorkommen der aktuellen Eingabe abgefragt.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim R&, LC%
Dim Was$
If Target.Row > 1 And Target.Column > 1 Then
If Target.Count = 1 Then
Was = "10:00" 'oder wie vorher Was = Target.Value
R = Target.Row
LC = Cells(R, Columns.Count).End(xlToLeft).Column 'letzte Spalte der Zeile
Select Case WorksheetFunction.CountIf(Range(Cells(R, 2), Cells(R, LC)), Was)
Case 1
MsgBox Was & " :Super, eine weiter fehlt noch"
Case 2
MsgBox Was & " :Sauber, alles erfüllt"
Case Is > 2
MsgBox Was & " :Das war zu viel des Guten"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Select
Else
MsgBox "Nur eine Zelle bearbeiten"
End If
End If
Err.Clear
Fehler:
If Err.Number  0 Then _
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub
Gruß UweD

Anzeige
AW: Nachgefragt..
17.12.2015 15:02:29
ALI
Hallo Uwe,
sauber, genau das was ich gesucht habe:) habe es jetzt für mich etwas angepasst. Klappt wunderbar.
Vielen Dank dafür.
LG

Bitte. owt
17.12.2015 15:04:38
UweD

AW: Bitte. owt
17.12.2015 16:43:07
ALI
Hallo Uwe, ich hab doch noch eine zusätzliche Frage? hatte versucht das irgendwie selber zu lösen, funktioniert leider nicht.
Jede Eingabe in einer Zelle überprüft ja wiederum ob die 10:00 Uhr schicht wie oft eingetragen wird.
Das heisst wenn LKW1 3 x die 10:00 Uhr Schicht eingetragen hat und danach nochmal eine 08:00 Uhr Schicht, kommt trotzdem die Meldung für die 3 x 10 Uhr Schicht.
gibt es eine Möglichkeit das zu unterbinden?

Anzeige
Nachfrage
18.12.2015 10:38:20
UweD
Also geht es dir nur um 10:00?

AW: VBA Excel mit MSG BOX
21.12.2015 11:58:01
Hajo_Zi
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf Deine Tabelle, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt nur in dieser Tabelle.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 And Target.Column > 1 Then
MsgBox Application.WorksheetFunction.CountIfs(Range("A:A"), Cells(Target.Row, 1),  _
Columns(Target.Column), Target)
End If
End Sub


Anzeige
AW: VBA Excel mit MSG BOX
21.12.2015 15:58:16
Ali
Hallo Hajo_Zi, hallo Uwe.
danke für die Hilfe.
@ Uwe, es geht mir nur um die 10:00 Uhr Schicht.
das ist der aktuelle Code, den ich drin habe.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim R&, LC%
Dim Was$
If Target.Row > 1 And Target.Column > 1 Then
If Target.Count = 1 Then
Was = "10:00" 'oder wie vorher Was = Target.Value
R = Target.Row
LC = Cells(R, Columns.Count).End(xlToLeft).Column 'letzte Spalte der Zeile
Select Case WorksheetFunction.CountIf(Range(Cells(R, 2), Cells(R, LC)), Was)
Case 1
If MsgBox("mein Text", vbYesNo) = vbYes Then
MsgBox "mein Text"
Else
MsgBox "mein Text"
End If
Case 2
If MsgBox("mein Text", vbYesNo) = vbYes Then
MsgBox "mein Text"
Else
MsgBox "mein Text"
End If
Case Is > 2
MsgBox "Yo, Mitarbeiter des Monats", vbCritical, "muahh"
End Select
Else
MsgBox "Nur eine Zelle einzeln bearbeiten"
End If
End If
Err.Clear
Fehler:
If Err.Number  0 Then _
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub

Es funktioniert auch super, nur wenn ich jetzt in einer Zelle bereits 3 x 10:00 drin stehen habe und in der nächsten Zelle eine 08:00 eingebe, dann erscheint immerwieder der Text >3 x 10:00 Uhr. Das ist ja auch logisch und gut, nur ich würde gerne die Meldung immer nur dann anzeigen lassen, wenn die Eingabe 10:00 Uhr auch gemacht wird.
Sprich:
Ich gebe 10:00 ein, die Meldung "noch 1" erscheint, ich gebe die 2 10:00 Uhr ein, die Meldung "sauber noch eine", ich gebe die 3 10:00 ein die Meldung "Perfekt" erscheint. Wenn ich jetzt in der gleichen Zeile eine 08:00 eintrage, soll keine Meldung mehr zu der 10:00 Uhr kommen.
Ich hoffe ich habe es einigermaßen verständlich erklärt.
LG
Anzeige

113 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige