Anzeige
Archiv - Navigation
1456to1460
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 Felder in verschiedenen Tabellenblättern färbe

VBA Felder in verschiedenen Tabellenblättern färbe
03.11.2015 15:06:08
Ole
Hi, ich habe folgendens Problem, ich habe einen Urlaubsplaner erstellt, dabei hat jeder Monat ein eigenes Tabellenblatt und es gibt eine erste Seite, auf der man per Button zu bestimmten Tabellenblättern springen kann.
Für die Planung soll jeder Mitarbeiter die entsprechenden Felder in der Tabelle für den jeweiligen Monat farbig markieren.
Ich habe soweit alles fertig und bin jetzt dabei ein UserForm zu erstellen, in welchem man auswählen kann, wann man abwesend ist, wer abwesend ist und welchen Grund dies hat.
Der Grund gibt die Farbe an, mit welcher markiert wird.
Das UserForm funktioniert auch, bis auf das färben der Felder.
Ich bräuchte also einen Code, der die DTPicker für das Datum auswertet, dann in das passende Tabellenblatt springt und dort nach dem jeweiligen Mitarbeiter sucht um dann die Felder (Tage z.B. 1-15) farbig markiert.
So sieht mein Code bis jetzt aus:
Private Sub UserForm_Initialize()
ComboBox2.AddItem "Urlaub"
ComboBox2.AddItem "GLZ"
ComboBox2.AddItem "Abwesenheit"
ComboBox1.RowSource = "Tabelle1!A1:A5"
End Sub
Private Sub CommandButton1_Click()
Application.EnableEvents = False
If DTPicker1 > DTPicker2 Then
MsgBox "Das Endedatum muss größer sein als das Startdatum"
Exit Sub
End If
If UserForm1.ComboBox1.Value = "" Then
MsgBox "Bitte einen Mitarbeiter auswählen"
Exit Sub
End If
If UserForm1.ComboBox2.Value = "" Then
MsgBox "Bitte einen Abwesenheitsgrund auswählen"
Exit Sub
End If
If UserForm1.ComboBox2.Value = "Abwesenheit" Then farbe = vbGreen
If UserForm1.ComboBox2.Value = "Urlaub" Then farbe = vbBlue
If UserForm1.ComboBox2.Value = "GLZ" Then farbe = vbYellow
Ich habe auch mal die komplette Datei hochgeladen: https://www.herber.de/bbs/user/101213.xlsm
Vielen Dank im Voraus.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du musst deine Datei nochmals hochladen, ...
03.11.2015 22:50:06
Luc:-?
…Ole,
denn sie ist beim 1.Mal anscheinend verloren gegangen. Das passiert leider mitunter.
Ansonsten kannst du die 3 letzten CodeZeilen auch so schreiben …
With UserForm1.ComboBox2
farbe = Switch(.Value = "Abwesenheit", vbGreen, .Value = "Urlaub", vbBlue, _
.Value = "GLZ", vbYellow)
End With
…oder so …
Select Case UserForm1.ComboBox2.Value
Case "Abwesenheit": farbe = vbGreen
Case "Urlaub": farbe = vbBlue
Case "GLZ": farbe = vbYellow
End Select
Kleiner Tipp: Wenn du die HTML-Pre-Tags nicht benutzt, solltest du eine gepostete Prozedur immer mit End … abschließen, sonst stellt die ForumsSoftware alles, was an Text nach der letzten CodeZeile kommt, als dem PgmCode zugehörig dar. Das könnte ggf auch Probleme beim AWen verursachen.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Du musst deine Datei nochmals hochladen, ...
04.11.2015 08:14:27
Ole
Ich habe die Datei nochmal hochgeladen: https://www.herber.de/bbs/user/101235.xlsm
Vielen Dank schonmal :) Wie bekomme ich das denn jetzt hin, dass das Programm die DTPicker ausliest und dann in das entsprechende Tabellenblatt springt und dort nach dem Mitarbeiter aus der Combobox1 sucht und dann die Felder für den Zeitraum aus den DTPickern mit der Farbe für den, in Combobox2 ausgewählten Grund, ausfüllt?

Du musst deine Datei nochmals hochladen
04.11.2015 17:18:36
Thomas
Hallo Luc :-?
da ich so etwas auch benötigen könnte habe ich mal dein Vorschlag ausprobiert.
Der Code sieht jetzt so aus ( unten) aber die betroffenen felder möchten sich einfach nicht Färben.
Mache ich etwas falsch?
liebe grüsse thomas
Private Sub UserForm_Initialize()
ComboBox2.AddItem "Urlaub"
ComboBox2.AddItem "GLZ"
ComboBox2.AddItem "Abwesenheit"
ComboBox1.RowSource = "Tabelle1!A1:A5"
End Sub
Private Sub CommandButton1_Click()
Application.EnableEvents = False
If DTPicker1 > DTPicker2 Then
MsgBox "Das Endedatum muss größer sein als das Startdatum"
Exit Sub
End If
If UserForm1.ComboBox1.Value = "" Then
MsgBox "Bitte einen Mitarbeiter auswählen"
Exit Sub
End If
If UserForm1.ComboBox2.Value = "" Then
MsgBox "Bitte einen Abwesenheitsgrund auswählen"
Exit Sub
End If
With UserForm1.ComboBox2
farbe = Switch(.Value = "Abwesenheit", vbGreen, .Value = "Urlaub", vbBlue, _
.Value = "GLZ", vbYellow)
End With
End Sub

Anzeige
'farbe' kann nur eine Long-Variable sein, die ...
04.11.2015 18:28:20
Luc:-?
…nur den Farbwert aufnimmt, Thomas,
und dann noch der entsprd Eigenschaft des Objekts zugewiesen wdn muss, das diese Farbe annehmen soll.
Ich ging davon aus, dass Ole das weiß, zumal er ja einen unvollständigen Code gepostet hatte.
Gruß, Luc :-?

AW: 'farbe' kann nur eine Long-Variable sein, die ...
04.11.2015 19:21:34
Ole
Ich weiß leider nur sehr wenig davon, ich habe den Code unvollständig gepostet, weil ich nicht weiter gekommen bin damit :/
Ich habe keine Ahnung, wie ich weitermachen soll, deshalb habe ich gefragt, wie das gehen kann.

Stimmt, erinnere mich, ...
04.11.2015 20:47:03
Luc:-?
…Ole;
allerdings ist das, was du bisher pgmmiert hast, ziemlich wenig, obwohl es massenhaft Bspp für Abwesenheitskalender hier (im Archiv) und anderswo geben dürfte. Muss denn immer wieder das Rad neu erfunden wdn? Wenn du etwas Eigenes willst, kannst du dich zumindest an den anderen orientieren.
Ansonsten musst du warten, habe zZ noch Anderes zu tun.
Luc :-?

Anzeige
Falls ihr noch Bedarf habt, ginge mal simpel ...
08.11.2015 04:21:44
Luc:-?
…das:
Private Sub CommandButton1_Click()
Const adMABer$ = "A3:A7"
Dim farbe As Long, Datum(1) As Date, Marb As String, _
relMABer As Range, aWs As Worksheet
On Error GoTo ex
Application.EnableEvents = False
Set aWs = ActiveSheet
If DTPicker1 > DTPicker2 Then
MsgBox "Das Endedatum muss größer sein als das Startdatum!", _
vbExclamation: GoTo ex
Else: Datum(0) = CDate(DTPicker1): Datum(1) = CDate(DTPicker2)
If Month(Datum(0))  Month(Datum(1)) Then _
MsgBox "Das Endedatum muss im gleichen Monat liegen!", _
vbExclamation: GoTo ex
End If
If UserForm1.ComboBox1.Value = "" Then
MsgBox "Bitte einen Mitarbeiter auswählen": Exit Sub
Else: Marb = UserForm1.ComboBox1.Value
End If
Select Case UserForm1.ComboBox2.Value
Case "": MsgBox "Bitte einen Abwesenheitsgrund auswählen!", _
vbExclamation: GoTo ex
Case "Abwesenheit": farbe = vbGreen
Case "Urlaub":      farbe = vbBlue
Case "GLZ":         farbe = vbYellow
End Select
Set relMABer = aWs.Range(adMABer)
Set relMABer = relMABer.Cells(WorksheetFunction.Match(Marb, _
relMABer, 0)).EntireRow
Set relMABer = aWs.Range(relMABer.Cells(1, Day(Datum(0)) + 1), _
relMABer.Cells(1, Day(Datum(1)) + 1))
relMABer.Interior.Color = farbe
ex: Application.EnableEvents = True
UserForm1.Hide: Set aWs = Nothing: Set relMABer = Nothing
If CBool(Err.Number) Then _
MsgBox Err.Description, vbCritical, "Fehler: " & Err.Number
End Sub
Gruß, Luc :-?

Anzeige
AW: Falls ihr noch Bedarf habt, ginge mal simpel ...
08.11.2015 13:15:04
Thomas
Hallo Luc:-?,
eigentlich hätte ich schon eine Verwendung dafür. Zur Zeit bin ich noch am testen was man als alternative für den DTPicker ( müsste ich immer nachinstallieren) hätte. Jedoch habe ich noch kein erfolg gehabt.
Ich habe schon mit Textfeldern probiert, versucht es in eine Zelle auszulagern und und.
Wenn ich was gefunden habe sage ich noch bescheid.
liebe grüsse thomas

Für d.DTPicker fühle ich mich nicht zuständig, ...
08.11.2015 17:55:48
Luc:-?
…Thomas,
da müsstest du Ole, in seiner Datei fktioniert er, o.A. fragen. ;-)
Gruß, Luc :-?

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige