Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
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
Wenn Wert 0 dann MsgBox
Heinz
Schönen Vormittag im Forum
Ich habe eine Arbeitsmappe mit "Jänner" bis "Dezember"
In den jeweiligen Sheets steht das Datum in C1:AG1
Ich möchte nun wenn zum Beispiel im "Oktober" D1 ist der 2.Oktober und D168 ist gleich 0 das eine MsgBox erscheint "2.Okt. in Schicht 1 kein "VA"
Es kann aber passieren das im Oktober zum Beispiel am 2.Okt. am 7.Okt. D168 =0 und 7.Okt. =0 das auch eine MsgBox erscheint "Hallo 2.Okt. kein VA in Schicht 1 - 7.Okt.kein VA in Schicht 2
Könnte mir dazu bitte jemand helfen?
Es könnte auch eine Liste erscheinen mit allen wo ein VA fehlt.
Habe mal eine Datei zum besseren Verständnis hochgeladen.
Danke & Gruß
Heinz
https://www.herber.de/bbs/user/71523.xls
AW: Wenn Wert 0 dann MsgBox
15.09.2010 07:02:26
Dirk
Hallo Heinz,
wann soll denn die Anzeige fuer die 'nullen' erfolgen? Man koennte das per Malrobutton als Auswertung starten.
Lass' mal hoeren.
gruss
Dirk aus Dubai
AW: Wenn Wert 0 dann MsgBox
15.09.2010 07:16:50
Heinz
Hallo Dirk
Wenn du bitte in der Datei die Zellen C168:AG170 anschaust,dann siehst du hier einige Nullen stehen.
Wenn in C168:AG168 eine Null steht dann sollte eine Meldung kommen: "Hallo am 2.Okt. kein VA in Schicht 1"
Wenn in C169:AG169 eine Null steht dann sollte eine Meldung kommen: "Hallo am 7.Okt. kein VA in Schicht 2"
Wenn in C170:AG170 eine Null steht dann sollte eine Meldung kommen: "Hallo am 21.Okt. kein VA in Schicht 3"
Danke für Deine Hilfe
PS:Bist du wirklich in Dubai ?
Gruß
Heinz
Anzeige
AW: Wenn Wert 0 dann MsgBox
15.09.2010 08:00:37
Dirk
Hallo!
Ja, ich bin in Dubai.
Nochmal: wann genau moechtest Du das angezeigt bekommen? Bei eingabe oder wenn Du einen Makroknopf anklickst?
Dirk
AW: Wenn Wert 0 dann MsgBox
15.09.2010 08:06:02
Heinz
Hallo Dirk
Am besten wäre wenn die Meldung kommt wenn ich auf das Tab.Blatt gehe.
Also zB. "Worksheet_activate()"
Gruß
Heinz
AW: Wenn Wert 0 dann MsgBox
15.09.2010 09:17:22
Heinz
Hallo Dirk
Funktioniert Hervorragend !!
Nur bitte sei mir nicht Böse. Wollte dein Makro erweitern,aber da blicke ich nicht durch.
Ich hätte nämlich das selbe für C173:AG175 "Kein Schrumpfer in Schicht..."
Und in C178:AG180 "Keine QS Besetzung in Schicht.." gebraucht.
Siehe angehängte Datei.
Könntest du mir Bitte diese noch Ergänzen,wollte es selber machen aber leider kein Durchblick.
Eventuell wenn möglich die "Vorarbeiter,Schrumpfer & Qs in eigener Farbe,wegen Übersicht,aber nur wenn möglich.
Ich bedanke mich recht herzlich
Gruß
Heinz
https://www.herber.de/bbs/user/71548.xls
Anzeige
AW: Wenn Wert 0 dann MsgBox
15.09.2010 09:46:11
Heinz
Hallo Dirk
Habe dein Makro in meine Arbeitsmappe eingepflanzt, aber da kommt nur "Hallo".
Kann es eventuell daran liegen, da ich mehrere Sheets habe, also nicht nur Jänner bis Dezember,
sondern auch "ÜST", "Formel" usw..
Kann die Mappe leider nicht hochladen,denn sie hat 6,5 MB.
Eventuell könnte ich sie dir mailen.
Meine Mailadresse ist heinholzmannQgmx.at
Gruß
Heinz
AW: Wenn Wert 0 dann MsgBox
15.09.2010 09:47:28
Heinz
Sorry
heinzholzmannQgmx.at
AW: Wenn Wert 0 dann MsgBox
15.09.2010 10:42:49
Dirk
Hallo Heinz,
habe gerade nochmal einen Update gemacht.
Wo hast Du denn das Makro hinkopiert? Es muss in ein Modul und fuer jedes Arbeitsblatt muss das Macro im Worksheet_Activate aufgerufen werden.
Die Auswertung erfolgt auf Basis der Eintraege in Spalte A. Falls Du das woanders hast, musst du das aendern.
Ansonsten einfach mal den VNE mit ALT +F11 oeffnen und das makro mit F8 starten (oder Zeile public Sub Auswertung waehlen und erst F9 druecken, damit ein halt gesetzt wird).
Wenn dann das Makro gestarted wird kannst Du ab da dann mit F8 weiterspringen und sehen, wo es haengt.
Gruss
Dirk aus Dubai
Anzeige
AW: Wenn Wert 0 dann MsgBox
15.09.2010 10:35:36
Dirk
Hallo Heinz,
hier mal mit der notwendigen Erweiterung. Alle noetigen Suchkriterien musst Du in das Array ablegen. Ich habe da jetzt Vorarbeiter, Schrumpfer und QS abgelegt. Falls Du noch weitere Eintraege benoetigst, einfach die Hochkommas vor MyArr(x0 entfernen und den Text dahinter aendern. Falls mehr als 6 eintraege noetig sind musst du das Array entsprechend groesser diemnsionieren.
Da die Ausgabe in einer Messagebox erfolgt habe ich gleich noch eine Behandlungsroutine fuer Ausgabestrings groesser 1024 Zeichen eingebaut. Man weiss ja nie...
https://www.herber.de/bbs/user/71553.xls
Lass' mal hoeren, ob ok.
Gruss
dirk aus Dubai
Anzeige
AW: Wenn Wert 0 dann MsgBox
15.09.2010 10:52:50
Heinz
Hallo Dirk
Es läuft einfach Traumhaft !!
Recht,recht Herzlichen D A N K !!
Wünsche dir noch einen schönen Aufenthalt in Dubai. (Ich beneide dich)
Gruß & Danke
Heinz aus Österreich
AW: 1.Fehler entdeckt
15.09.2010 11:31:53
Heinz
Hallo Dirk
Habe soeben bei Februar und Monate die 30 Tage haben einen Fehler entdeckt.
Könntest du bitte nachsehen,wo der Fehler liegt.
Danke & Gruß Heinz
https://www.herber.de/bbs/user/71554.zip
AW: 1.Fehler entdeckt
15.09.2010 12:17:52
Dirk
Hallo Heinz,
hier nun mit Anpassung. So sollte das jetzt gehen
https://www.herber.de/bbs/user/71555.xls
Lass' hoeren, ob ok.
Gruss
Dirk aus Dubai
Anzeige
AW: 1.Fehler entdeckt
15.09.2010 12:44:55
Heinz
Hallo Dirk
Jetzt funkt. es wirklich wunderbar.
Hätte noch eine Frage:
Habe ein Makro zu einen neuen Schichtplan einfügen.
Hier muss ich ca.10 mal die Meldung "Alles Schichten besetzt" von deinen Makro bestätigen.
Dann läuft erst das Makro zum Schichten einfügen.
Könnte ich hier nicht am Anfang dein Makro deaktivieren, und zum Schluß wieder aktivieren.
PS. Wie spät ist es jetzt in Dubai, und wie warm ist es bei dir?
Danke & Gruß
Heinz
Option Explicit
Sub Neuer_Schichtplan()
Application.ScreenUpdating = False
If Application.InputBox("Bitte Passwort eingeben : ") = "test" Then
If MsgBox("Wollen Sie die Schichten einfügen ? Die alten Schichtpläne werden gelöscht.",  _
vbQuestion + vbYesNo, _
" Nachfrage Schichten einfügen !") = vbNo Then Exit Sub
'Jänner
Sheets("Jänner").Unprotect
Worksheets("Jänner").Range("C3:AG154").ClearComments
Worksheets("Jänner").Range("C3:AG154").Font.ColorIndex = 0
Worksheets("Jänner").Range("C3:AG154").Interior.ColorIndex = xlNone
'Schichtplan
Worksheets("Schichtplan").Range("C6:K36").Copy
Worksheets("Jänner").Range("C500").PasteSpecial Paste:=xlPasteValues, Transpose:=True
'Schichtplan VA
Worksheets("Schichtplan VA").Range("C6:G36").Copy
Worksheets("Jänner").Range("C509").PasteSpecial Paste:=xlPasteValues, Transpose:=True
'Schichtplan Schrumpfer
Worksheets("Schichtplan Schrumpfer").Range("C6:G36").Copy
Worksheets("Jänner").Range("C514").PasteSpecial Paste:=xlPasteValues, Transpose:=True
'Schichtplan QS
Worksheets("Schichtplan QS").Range("C6:G36").Copy
Worksheets("Jänner").Range("C519").PasteSpecial Paste:=xlPasteValues, Transpose:=True
Worksheets("Jänner").Range("C541:AG692").Copy
Worksheets("Jänner").Range("C3").PasteSpecial Paste:=xlPasteValues, Transpose:=False
Worksheets("Jänner").Range("C3:AG154").Replace what:="0", Replacement:=""
Sheets("Jänner").Protect

Anzeige
AW: 1.Fehler entdeckt
15.09.2010 12:59:07
Dirk
Hallo!
passe mal dein 'Schichtplan einfuegen'-Makro an und setze hinter Application.ScreenUpdating = False
Folgende Zeile:
Application.enableevents=false
und am ende des Makros for end sub
Application.enableevents=true
Dann sollte das gehen.
Hier ist es z.Z. 38 Grad warm und 15;00 uhr.
Gruss
dirk aus Dubai
AW: 1.Fehler entdeckt
15.09.2010 13:14:37
Heinz
Hallo Dirk
Du bist einfach ein WAHNSINN !!
Echt super.
Recht herzlichen Dank.
Nun bin ich mit dem Schichtplan zu 99% fertig.
Jetzt fehlt mir nur noch. Wenn ein Mitarbeiter unter dem Jahr das Dienstverhältnis löst das dann auch die restlichen Schichten gelöscht werden.
Zum Beispiel: In A3:A154 stehen die Namen der Mitarbeiter. Nun hat der Mitarbeiter von A55 am 15.Juni seinen letzten Arbeitstag.
Nun würden alle Schichten ab 16.Juni bis 31.Dezember gelöscht gehören.
Könntest du mir dazu bitte auch noch helfen ? Oder hast du schon genug von mir ?
Kann ich auch vollkommen verstehen.
Stelle nicht mehr auf "Frage offen" da du mir alles nach meinen Vorstellungen Dankenderweise gemacht hast.
Ich bedanke mich jedenfalls noch einmal recht herzlich bei dir.
PS:Bist du beruflich auf längere Zeit in Dubai ?
Gruß
Heinz
Anzeige
AW: 1.Fehler entdeckt
15.09.2010 14:14:50
Dirk
Hallo!
ich mach da mal was. Kann aber bis morgen dauern.
Ich wohne und arbeite hier seit 2001.
gruss
Dirk aus Dubai
AW: 1.Fehler entdeckt
15.09.2010 14:34:17
Heinz
Hallo Dirk
Recht herzlichen Dank
Gruß
Heinz
AW: 1.Fehler entdeckt
15.09.2010 15:11:36
Dirk
Hallo Heinz,
hier ein Makro zum MA loeschen. Kopiere es in das Modul MainBase und starte es ueber einen Macrobutton.
Public Sub Mitarbeiter_Loeschen()
'Frage Letzten Arbeitstag ab und loesche alle Zeilen in allen Monatstabellen nach diesem Datum
Dim MyName As String, Letzter As Date, Ultimo As Boolean, MyMonth As String, MyMonthArr(12),  _
UserInput As String
Dim i As Long, k As Long, Myfind As Range, MyCell As Object, MonatDays As Long, MyRange As  _
Range, StartCol As Long
'Monatsarray belegen
MyMonthArr(1) = "Januar"
MyMonthArr(2) = "Febuar"
MyMonthArr(3) = "Maerz"
MyMonthArr(4) = "April"
MyMonthArr(5) = "Mai"
MyMonthArr(6) = "Juni"
MyMonthArr(7) = "Juli"
MyMonthArr(8) = "August"
MyMonthArr(9) = "September"
MyMonthArr(10) = "Oktober"
MyMonthArr(11) = "November"
MyMonthArr(12) = "Dezember"
'Startspalte festlegen,in welcher sich der 1. des Monats befindet
StartCol = 3  'Spalte C
Wiederholen:
MyName = InputBox("Bitte geben Sie den Namen des zu loeschenden Mitarbeiters ein:", "     _
Mitarbeiter loeschen")
If MyName  "" Then
Letzter = InputBox("Bitte geben Sie das Datum des Letzten Arbeitstag des Mitarbeiters ein:", _
"     Mitarbeiter " & MyName & " loeschen")
If IsDate(Letzter) Then
UserInput = MsgBox("Soll der Mitarbeiter '" & MyName & "' ab " & Letzter + 1 & "  _
aus dem Schichtplan entfernt werden?", 33, "Loeschabfrage")
If UserInput = vbOK Then
GoTo MA_Loeschen
Else
MsgBox "Loeschen abgebrochen"
Exit Sub
End If
Else
MsgBox "Loeschen abgebrochen"
Exit Sub
End If
Else
MsgBox "Loeschen abgebrochen"
Exit Sub
End If
MA_Loeschen:
Application.EnableEvents = False
MyMonth = MyMonthArr(Month(Letzter))
MonatDays = Day(DateSerial(Year(Letzter), Month(Letzter) + 1, 1) - 1)
If MonatDays = Day(Letzter) Then
'Kuendigung zum Monatsletzten, Schichten ab naechsten monat loeschen
i = Month(Letzter) + 1
Ultimo = True
Else
i = Month(Letzter)
End If
For i = i To 12
ThisWorkbook.Sheets(MyMonthArr(i)).Select
Set MyRange = Range("A3:A154")
With MyRange
Set Myfind = .Find(what:="*" & MyName & "*")
If Not Myfind Is Nothing Then
If Ultimo = True Then
Range(Myfind.Address).EntireRow.Delete
Else
For k = Day(Letzter) + StartCol To MonatDays + StartCol
Cells(Myfind.Row, k).Value = ""
Next k
End If
Else
UserInput = MsgBox("Mitarbeiter konnte nicht gefunden werden!" & vbCrLf & _
"Bitte Schreibweise pruefen: " & MyName, vbRetryCancel & vbCritical, "     _
Fehler beim Mitarbeiternamen")
If UserInput = vbRetry Then
GoTo Wiederholen
Else
'Benutzerabbruch
GoTo Abbruch
End If
End If
End With
Next i
MsgBox "Der Mitarbeiter wurde aus den verbleibenden Schichtplaenen geloescht"
Abbruch:
Application.EnableEvents = True
End Sub
Man koennte auch noch eine Liste der Mitarbeiter erstellen, aus der ausgewaehlt wird, aber dafuer muesste man dann eine userform kreieren.
Lass' hoeren, ob so ok.
Gruss
Dirk aus Dubai
Anzeige
AW: 1.Fehler entdeckt
15.09.2010 15:29:02
Heinz
Hallo Dirk
Dürfte ich dir Bitte die Datei mal per mail senden ?
heinzholzmann@gmx.at
AW: 1.Fehler entdeckt
16.09.2010 08:46:11
Dirk
Hallo Heinz,
habe Dir gerade die Datei zugesandt.
Lass' hoeren, ob ok
Gruss
Dirk aus Dubai
AW: 1.Fehler entdeckt
16.09.2010 15:14:40
Heinz
Hallo Dirk
Habe dir ein Mail geschrieben.
Glaube wir können diesen Thread schliessen und per mail weitermachen.
Gruß
Heinz

385 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige