bisher beschränken wir uns ja -bis auf wenige Ausnahmen- auf dieses kleine Projekt hier aber ich würde hier gerne wieder eine Ausnahmekommentierung vornehmen: @Rabe: Antwort umd 1:21Uhr? @Schauan: und du mein Lieber, wieder 6:24 Uhr? Ich mag dieses Forum wirklich! Danke Männer!
Back to the roots:
@Rabe: An diese Möglichkeit hatte ich auch schon gedacht. Aber immer eine Msg.Box wenn einer der Werte fehlt, könnte auf Dauer nervig sein?! Es sei denn, es gibt die Möglichkeit, dass wenn man die Artikel kopieren möchte, dass er dann jedes Feld prüft und im Anschluss die nicht ausgefüllten Felder Rot färbt und nach Korrektur wieder Grün?! (ich stelle mir das gerade so vor, wie wenn man sich z.B. irgendwo neu registrieren möchte und du ein Feld nicht ausfüllst, dass du die Registrierung nicht abschließen kannst).
@Schauan: Welchen Laufzeitfehler meinst du? Also derzeit stehen die Formeln in folgender Abhängigkeit:
Wird in "I" ein Wert eingetragen steht in "J" "Select Timeline" Wird in "K" ein Wert eingetragen (und im Input kein Datum eingetragen wurde) steht in "H" "Fehler" und in "I" "No days to calculate".
Ich muss da die Fälle abdecken, für den Fal, dass jemand besonders Schlau sein möchte
Danke, viele Grüße und einen guten Start in den Tag Alex
09.08.2014, 14:55 (Dieser Beitrag wurde zuletzt bearbeitet: 09.08.2014, 15:29 von Rabe.)
Hi Alex,
(09.08.2014, 08:34)Alex105 schrieb: @Rabe: Antwort umd 1:21Uhr? @Schauan: und du mein Lieber, wieder 6:24 Uhr? Ich mag dieses Forum wirklich! Danke Männer!
Back to the roots:
@Rabe: An diese Möglichkeit hatte ich auch schon gedacht. Aber immer eine Msg.Box wenn einer der Werte fehlt, könnte auf Dauer nervig sein?! Es sei denn, es gibt die Möglichkeit, dass wenn man die Artikel kopieren möchte, dass er dann jedes Feld prüft und im Anschluss die nicht ausgefüllten Felder Rot färbt und nach Korrektur wieder Grün?! (ich stelle mir das gerade so vor, wie wenn man sich z.B. irgendwo neu registrieren möchte und du ein Feld nicht ausfüllst, dass du die Registrierung nicht abschließen kannst).
1.: ja, klar, habe grad Urlaub. Wir wollen doch die Zeit des unbetreuten Forums möglichst minimieren. :) 2.: das mit den Farben ist ja in Andrés Beitrag von heute 6:24 schon drin.
Zitat:Du könntest in K3 auch folgende Bedingung für eine bedingte Formatierung definieren =UND(I3<>"";K3="") K3 damit z.B. gelb oder rot färben und dann mit dem Pinsel das Format nach unten übertragen.
das kombiniert mit der Gültigkeit, daß es keine leere Zelle geben kann, dann ist doch alles abgedeckt.
Andererseits: Wenn da eine nervige Msgbox kommt, dann macht der Benutzer den Fehler nicht sehr oft, bis er es gelernt hat. ;)
Sorry für die späte Antwort. Ich lade morgen früh eine Datei hoch, die ein Auszug der Originaldatei abbildet.
Ich habe die Formatierung angepasst aber er färbt die Zelle noch nicht, wenn ich zuerst "I" ausfülle. Ich muss mich da morgen früh nochmal in Ruhe dran setzten.
@Schauan: siehst du eine Möglichkeit, dass ich das Projekt sperre, ohne das jemand ein mögliches Passwort auslesen könnte?
ich habe jetzt mal die Originaltabelle um einige "Reiter" gekürzt und neu eingestellt.
Warum auch immer, übernimmt er mir beim Cell_Reset wieder nicht die Farbe in "I" und "K". Und das Thema mit "I" zuerst und dann grün einfärben funktioniert bei mir auch noch nicht :(
Danke für deine Hilfe und einen guten Start in die Woche
nach etwas hin und her ist mir noch etwas aufgefallen
Ich habe zusätzlich, zu deiner Idee mit dem Kontextmenü, noch entsprechende Command.Boxen eingefügt (es gibt ja auch Kunden, die kommen evlt. nicht so gut mit der Steuerung des ganzen via rechter Maustaste zurecht
Diese Liegen alle auf dem Desktop und laufen auch. Bis auf ein Teilchen. Das "Save as PDF" speichert das aktuelle Tabellenblatt (indem Fall ja "Input", weil dort der Button liegt.
Hier mal der Code:
Code:
Sub DateiSpeichernUnter() 'Sicherheitsabfrage If MsgBox("An already existing PDF will be overwritten, if you have saved one! Continue?", vbYesNo, "Save PDF ") _ = vbNo Then Exit Sub 'Aktives Blatt als pdf speichern With ActiveSheet.PageSetup <--- HIER .Orientation = xlLandscape .Zoom = 60 End With ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "/" & ThisWorkbook.Name & ".pdf" 'Dialog Speichern unter aufrufen 'Application.CommandBars.ExecuteMso "FileSaveAs" End Sub
Wäre es möglich, den Verweis so zu gestalten, dass wenn:
1. der User mit der rechten Maustaste arbeitet (im temporären Blatt) dieses so gespeichert wird 2. der User zurück zum "Input" springt und dort den Button drücken möchte er auch das temporäre Blatt nimmt, statt das Blatt "Input"
Wenn das sehr aufwendig ist, kann ich auch ein workaround machen
in den Beispielen war bis jetzt immer in Spalte H ein Eintrag - außer in der farbigen "Zwischenzeile". Damit ich nicht versehentlich die Zwischenzeile färbe, habe ich also nachgeschaut, ob in H was steht.
Jetzt steht dort überall nichts mehr Dann hattest Du auch nicht den letzten code im SheetChange. Dein grau ist auch etwas dukler als zuletzt.
In Spalte K hast Du keine Auswahlfelder mehr. Dadurch kann man das SheetChange erweitern und jetzt auch die Zeile gelb färben, wenn eine Eingabe fehlt - siehe hier:
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 'Wenn der Name des aktiven Blattes <> Input und Sales ist, dann If Sh.Name <> "Input" And Sh.Name <> "Sales" Then 'Wenn die Aenderung in Spalte G erfolgt und nur eine Spalte betrifft, dann If Target.Row > 2 And Target.Column = 9 And Target.Columns.Count = 1 And Target.Areas.Count = 1 Then 'Blattschutz aufheben Sh.Unprotect 'Schleife ueber alle gewaehlten Zellen For Each zellen In Target 'Mit dem Bereich Spalte C (3) bis M (13) With Sh.Range(Sh.Cells(zellen.Row, 3), Sh.Cells(zellen.Row, 13)) 'Wenn Inhalt > 0 ist, dann mit ... einfaerben, sonst Farbe rausnehmen If zellen > 0 And zellen.Offset(, -5) <> "" And zellen.Offset(, 2) <> "" Then .Interior.Color = 5296274 ElseIf (zellen > 0 And zellen.Offset(, -5) <> "" And zellen.Offset(, 2) = "") Or _ (zellen = "" And zellen.Offset(, -5) <> "" And zellen.Offset(, 2) > 0) Then .Interior.Color = 65535 ElseIf zellen.Offset(, -5) <> "" Then .Interior.Color = xlNone 'Hellgrau in Spalte I und K setzen Sh.Cells(zellen.Row, 9).Interior.Color = 15921906 Sh.Cells(zellen.Row, 11).Interior.Color = 15921906 End If 'Ende Mit dem Bereich Spalte C (3) bis M (13) End With 'Ende Schleife ueber alle gewaehlten Zellen Next 'Blattschutz setzen Sh.Protect ElseIf Target.Row > 2 And Target.Column = 11 And Target.Columns.Count = 1 And Target.Areas.Count = 1 Then 'Blattschutz aufheben Sh.Unprotect 'Schleife ueber alle gewaehlten Zellen For Each zellen In Target 'Mit dem Bereich Spalte C (3) bis M (13) With Sh.Range(Sh.Cells(zellen.Row, 3), Sh.Cells(zellen.Row, 13)) 'Wenn Inhalt > 0 ist, dann mit ... einfaerben, sonst Farbe rausnehmen If zellen > 0 And zellen.Offset(, -7) <> "" And zellen.Offset(, -2) <> "" Then .Interior.Color = 5296274 ElseIf (zellen = "" And zellen.Offset(, -7) <> "" And zellen.Offset(, -2) > 0) Or _ (zellen > 0 And zellen.Offset(, -7) <> "" And zellen.Offset(, -2) = "") Then .Interior.Color = 65535 ElseIf zellen.Offset(, -7) <> "" Then .Interior.Color = xlNone 'Hellgrau in Spalte I und K setzen Sh.Cells(zellen.Row, 9).Interior.Color = 15921906 Sh.Cells(zellen.Row, 11).Interior.Color = 15921906 End If 'Ende Mit dem Bereich Spalte C (3) bis M (13) End With 'Ende Schleife ueber alle gewaehlten Zellen Next 'Blattschutz setzen Sh.Protect 'Ende Wenn die Aenderung in Spalte G erfolgt und nur eine Spalte betrifft, dann End If 'Ende Wenn der Name des aktiven Blattes <> Input und Sales ist, dann End If End Sub
Die Farbnummer für das Grau bekommst Du z.B. so raus:
MsgBox ActiveCell.Interior.Color
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
das mit dem pdf kannst Du ähnlich wie beim cellreset lösen. Problem war und ist ja, dass der Blattname des temporären Blattes unbekannt ist. Im CelllReset habe ich diese Schleife:
Code:
Dim blaetter .. ... For Each blaetter In Worksheets() 'Wenn der Blattname nicht Input und Sales ist, dann If blaetter.Name <> "Input" And blaetter.Name <> "Sales" Then 'wenn ein Bild drauf ist If blaetter.Pictures.Count > 0 Then
Dort machst Du dann mit blaetter.ExportAsFixedFormat... und was Du sonst noch tun willst bis hin zum zurückspringen, weiter und schließt dann die Ifs und die Schleife.
Das Projekt kannst Du mit den Boardmitteln schützen. Mehr geht in Excel nicht.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
sorry für meine späte Antowrt. Ich muss gleich noch in die Schweiz fahren. Das mit dem Gelb ist genial. Und wenn ich jetzt erst in "I" was eintrage und dann in "K" färbt er mir das alles grün ein! Tausend Dank.
ABER:
Er setzt mir die Zellen beim Clear_Worksheet nicht mehr ins Grau um. Also "I" und "K" sondern lässt die gesamt Zelle gelb eingefärbt. Weist du evtl. woran das liegen könnte? :17: (ich habe unsere Codes miteinander verglichen und entsprechend angepasst)
Das mit dem PDF erzeugen aus dem "Input"-sheet via Button, bzw. das Umsetzen davon, ist mir tatsächlich noch unklar, wie du das meinst:05:
Danke Schauan! :100: wenn du willst bringe ich dir schweizer Schokolade mit und schicke sie dir dann per post