Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten in jeweiligen Monat übertragen

Daten in jeweiligen Monat übertragen
14.12.2017 16:14:15
Kevin
Moin Moin! ;-)
Momentan schreibe ich eine kleine Excel-Datei in der über einen Click auf einen CommandButton eine Userform geöffnet wird. Dort können dann Einsatzdaten eingegeben werden und werden bei "Eingabe speichern" in ein Tabellenblatt eingefügt.
So weit, so gut: Es funktioniert. Allerdings werden die eingegebenen Daten bisher nur in ein bestimmtes Tabellenblatt eingefügt. Ziel ist es aber, ohne weitere Eingabe die Daten in das Tabellenblatt des jeweiligen Monats einzufügen - unten finden sich die 12 Monate als Tabellenblätter, diese wurden von einem blanko per Klick kopiert.
Die Daten sollen halt Monat für Monat seperat geführt werden. Zudem sollen die Daten dann auf einer "Statistik-Seite", einem extra Tabellenblatt, ausgewertet bzw. addiert werden. Ist das irgendwie möglich? Muss ich das in die einzelnen Programmierungen der Tabellenblätter legen, oder kann ich es mit dem Textfeld TextBox1 = Date bzw. der ComboBox1 = Month (now) verknüpfen`?
Ich komme einfach nicht dahinter und wäre dankbar für jede Hilfe ;-)
Lieben Gruß
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 16:31:04
Hartmut_M
Hallo Kevin, so richtig verstehe ich die Fragestellung nicht.
Du hast 12 Tabellenblätter, für jeden Monat eines?
Aus dem Formular sollen die Daten, abhängig von einem Datum im Formular auf das Tabellenblatt des Monats übertragen werden?
Dann frage den Monat des Datumfeldes ab und ordne das Ergebnis dem entsprechenden Tabellenblatt zu.
Code könnte so aussehen:
dim varDatum as date, varMonat as byte
varDatum = TextBox 1
varMonat = Month(varDatum)
if varMonat = 1 then
Sheets("Januar") ...
end if
if varMonat = 2 then
Sheets("Februar") ...
end if
Gruß Hartmut
Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 16:55:24
Kevin
Hallo Hartmut,
ganz genau. In der Leiste der Tabellenblätter gibt es die Reiter "Startseite", "Statistik", "Blanko" und folgend die 12 Monate. Auf der Startseite befinden sich CommandButton's wie "Neuer Einsatz", "Statistik einsehen" und "Speichern & schließen". Darüber soll dann alles bedient werden. Beim Klick auf "Neuer Einsatz" öffnet sich dann die UserForm mit den auszufüllenden Feldern, dort gibt es versch. Arten wie Combobox, ListBox etc. --- nur zum Verständnis :-P
Nun müsste ich doch in der UserForm die TextBox für den Monat einpflegen, bsp TextBox1 = month(now()) und den Wert dieser TextBox1 (bsp "Dezember") durch die u.g. Funktion übernehmen können.
'habe es etwas umgemodelt, könnte das so funktionieren?
dim varDatum as date, varMonat as byte
varMonat = TextBox1
if varMonat = Dezember then
Sheets("Dezember")
'und so weiter, für alle anderen Monate..
Es ist ja sicher variabel ob ich nun die Monate in Zahlen oder in Worten nehme, richtig? Muss ich ja oben nur entsprechend anpassen..
Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 17:04:52
Werner
Hallo Kevin,
nimm doch für die Auswahl der Monatsblätter auf deiner Userform eine Listbox die du beim Start der Userform mit den Monatsnamen Januar bis Dezember befüllst.
Ansonsten kleiner Tip, Beispielmappe hochladen.
Gruß Werner
AW: Daten in jeweiligen Monat übertragen
14.12.2017 17:07:42
Kevin
Hallo Werner!
Ich würde die Datei gleich einfach mal hochladen, vielleicht ist es dann ein wenig einfacher. Ich habe schon eine ListBox mit den Monaten in der UF, möchte allerdings, dass man dort nicht extra noch etwas auswählen muss.
Gruß
Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 17:13:58
Hartmut_M
Der Ausdruck "Month" gibt die Monatszahl zurück und nicht den Monatsnamen.
Es müsste also heißen:
if varMonat = 12 then
Sheets("Dezember")

Um den aktuellen Monat direkt anzeigen zu lassen nutze diesen Code:
Private Sub UserForm_Initialize()
TextBox1 = Month(Now())
End Sub

Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 17:21:21
Kevin
https://www.herber.de/bbs/user/118345.xlsm
Das wäre dann die Datei zum testen / anschauen
Das neue Tabellenblatt mit dem gewünschten Monat bekommt man über einen Klick auf den ComBut. "Neuer Monat"
Schaut einfach mal rein :-)
Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 17:52:28
Werner
Hallo Kevin,
da brauchst du doch jetzt schon nichts zu ändern, in der Combobox wird dir doch jetzt schon der aktuelle Monat angezeigt.
Das ansprechen des entsprechenden Tabellenblattes dann so (Code für deinen Speichern Button):
Private Sub Button_Eingabe_Click()
'Daten in Tabelle schreiben
With Worksheets(Me.ComboBox_Monat.Value)
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(Zeile, 1).Value = Me.TextBox_Datum.Value
.Cells(Zeile, 3).Value = Me.TextBox_ENR.Value
.Cells(Zeile, 2).Value = Me.ComboBox_Wache.Value
.Cells(Zeile, 4).Value = Me.TextBox_Patient.Value
.Cells(Zeile, 5).Value = Me.ComboBox_Einsatzort.Value
.Cells(Zeile, 6).Value = Me.ComboBox_Transportziel.Value
.Cells(Zeile, 7).Value = Me.ComboBox_Fahrer.Value
.Cells(Zeile, 8).Value = Me.ComboBox_Beifahrer.Value
.Cells(Zeile, 9).Value = Me.ComboBox_Notarzt.Value
.Cells(Zeile, 10).Value = Me.TextBox_Kilometer.Value
End With
Unload Me
End Sub
Gruß Werner
Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 18:10:29
Kevin
Unglaublich! Es funktioniert natürlich... :D Danke, Danke, Danke!
Wener, Hartmut: Danke für die Antworten!
Nun habe ich noch zwei Dinge die ich ebenfalls schon seit Wochen probiere, allerdings nicht richtig hinbekomme - darf ich wohl noch diese beiden Dinge erfragen? ;-) Weiß leider nicht, ob ich dafür einen neuen Thread öffnen muss...
Gruß
Kevin
Anzeige
Frag doch einfach,....
14.12.2017 18:21:50
Werner
Hallo Kevin,
....wenn ich dir nicht weiterhelfen kann, kannst du ja immer noch einen neuen Beitrag eröffnen.
Gruß Werner
AW: Frag doch einfach,....
14.12.2017 18:27:42
Kevin
Stimmt auch wieder, danke schonmal!
Nun hast du ja die Datei gesehen. In der UserForm1 werden ja div. Daten eingegeben und manche sind schon vordefiniert. Nun ist das System bei uns nach "Wachen" aufgestellt. (siehe ListBox "Wache")
Beispiel dazu: Heute ist Wache III dran, morgen Wache I und übermorgen Wache II.
Noch müsste man diese Wachen ja händisch in der ListBox "Wache" i.d. UserForm auswählen. Gibt es eine Möglichkeit, dass man der Datei sagt "jeden 3. Tag ab Tag X Wache III"? Sodass man dann nicht mehr händisch die Wache eingeben bzw. auswählen muss... Dazu soll dann beim speichern, sofern das o.g. funktioniert, im Tabelleneintrag die Wachen unterschiedliche Schriftfarben haben.
Ich stelle Fragen.... :D
Anzeige
AW: Daten in jeweiligen Monat übertragen
14.12.2017 17:46:17
Kevin
lässt sich die Datei o. Probleme öffnen?
AW: Daten in jeweiligen Monat übertragen
15.12.2017 12:01:29
Hartmut_M
Zum automatischen Eintrag der Wache fällt mir dieses ein:
Dim varDatum1 As Date
varDatum1 = "1.12.2017"
Do While varDatum1 
Gruß Hartmut
AW: Daten in jeweiligen Monat übertragen
15.12.2017 12:13:52
Hartmut_M
Bezüglich Schriftfarbe vielleicht so:
Cells(Zeile, 2).Value = ComboBox_Wache.Value
If Cells(Zeile, 2).Value = "I" Then Font.Color = -16776961 'rot
If Cells(Zeile, 2).Value = "II" Then Font.Color = -11489280 'grün
If Cells(Zeile, 2).Value = "III" Then Font.Color = -4165632 'blau
Hab's jetzt nicht getestet.
Anzeige
AW: Daten in jeweiligen Monat übertragen
15.12.2017 17:45:22
Kevin
Funktioniert leider irgendwie nicht bei mir, kann aber auch sein, dass ich es falsch eingefügt habe. Nun würde ich erstmal kurzzeitig bei der ComboBox bleiben, später noch einmal nach dem Anliegen schauen. Danke Danke! :-)
Nun habe ich noch eine Frage:
Wenn bspw. in Zeile 6, Spalte B, quasi B6 nach einem neuen Eintrag über die UserForm ein bestimmtes Wort bzw. eine Zahl zw. 1-3 steht, ist es da möglich die jeweiligen Zeilen unterschiedlich zu färben, also ganz automatisch?
Beispiel:
B6 = 2
B7 = 2
B8 = 3
B9 = 1
B10 = 1
Ergebnis: B6 und B7 sind hellblau, B8 ist rot und B9 und B10 sind hellgrün. Vor dem Eintrag der Zahl waren die jeweiligen Zeilen weiß.
Geht sowas? Habe es schonmal in einem Programm gesehen, weiß aber den konkreten Lösungsweg leider nicht. :D
Gruß
Kevin
Anzeige
AW: Daten in jeweiligen Monat übertragen
16.12.2017 11:53:59
Werner
Hallo Kevin,
das geht doch völlig easy mit der bedingten Formatierung.
-in deinem entsprechenden Monatsblatt B3 bis B1403 markieren
-Start-Bedingte Formatierung-Neue Regel-Formel zur Ermittlung der zu formatierenden Zellen verwenden
-Formel im Formelfeld: =B3="I"
-Formatieren-Schrift-Farbe auswählen
Selbes Prozedere dann noch für "II" und für "III" entsprechend dann halt mit anderen Schriftfarben.
Für dein anderes Problem habe ich im Moment keine Zeit/Resourcen. Meine Internet-Verbindung ist im Moment down.
Sobald ich wieder online bin setze ich mich mal dran, hab da schon eine Idee.
Gruß Werner
Anzeige
Vorauswahl
16.12.2017 13:06:54
Werner
Hallo Kevin,
für die Vorauswahl der Wache:
Im Tabellenblatt "Startseite" Zelle I1 folgende Formel:
=WENN(H1="";"";WENN(H1="I";1;WENN(H1="II";2;WENN(H1="III";0;""))))
Im Tabellenblatt "Startseite" die Spalten H und I ausblenden.
Im Userform_Initialize am Ende, vor End Sub, einfügen:
With ComboBox_Wache
If Worksheets("Startseite").Range("I1")  "" Then
.ListIndex = Worksheets("Startseite").Range("I1")
End If
End With
Code für deinen Eingabe Speichern Button:
Private Sub Button_Eingabe_Click()
'Daten in Tabelle schreiben
With Worksheets(Me.ComboBox_Monat.Value)
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(Zeile, 1).Value = Me.TextBox_Datum.Value
.Cells(Zeile, 3).Value = Me.TextBox_ENR.Value
.Cells(Zeile, 2).Value = Me.ComboBox_Wache.Value
.Cells(Zeile, 4).Value = Me.TextBox_Patient.Value
.Cells(Zeile, 5).Value = Me.ComboBox_Einsatzort.Value
.Cells(Zeile, 6).Value = Me.ComboBox_Transportziel.Value
.Cells(Zeile, 7).Value = Me.ComboBox_Fahrer.Value
.Cells(Zeile, 8).Value = Me.ComboBox_Beifahrer.Value
.Cells(Zeile, 9).Value = Me.ComboBox_Notarzt.Value
.Cells(Zeile, 10).Value = Me.TextBox_Kilometer.Value
End With
Worksheets("Startseite").Range("H1") = Me.ComboBox_Wache
Unload Me
End Sub
Gruß Werner
Anzeige
AW: Daten in jeweiligen Monat übertragen
16.12.2017 14:24:22
Kevin
Hallo Werner!
Vielen Dank für die Antwort, ich konnte nach etwas Recherche das Anliegen gestern mittels bedingter Formatierung und div. Regeln lösen - klappt nun wunderbar!
Ich habe mich heute gegen die automatische Weiterstellung der Wachen 1-3 entschieden, damit die Angabe jeder selbst auswählen muss. Es wird sonst problematisch, da die jeweiligen Wachen bis 08:00 des Folgetages laufen, die autom. Einstellung allerdings nur bis 00:00 Uhr. So muss dann jeder eben ein Häkchen setzen, auch okay ;-)
Im großen und ganzen ist die Datei nun eigentlich fertig und wird noch mit einigen, kleinen und hilfreichen Funktionen für den Dienstbetrieb beschrieben - dann sollte es passen. Somit können wir theoretisch den Thread hier beenden. Es werden aber sicher noch fragen kommen, also werde ich dann wie gehabt zuerst hier einmal kurz anfragen. Vielen, vielen, vielen Dank für die schnelle und kompetente Hilfe, Hartmut und Werner! ;-)
Gruß
Anzeige
Gerne u.Danke für die Rückmeldung. o.w.T.
16.12.2017 14:29:31
Werner
Anzeige
Anzeige

Infobox / Tutorial

Daten in jeweiligen Monat übertragen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Erstelle eine UserForm mit verschiedenen Eingabefeldern, einschließlich einer TextBox für das Datum und einer ComboBox für die Wache.

  2. Code zur Übertragung der Daten: Füge den folgenden VBA-Code in den Button "Eingabe speichern" ein, um die Daten in das jeweilige Monatsblatt zu übertragen:

    Private Sub Button_Eingabe_Click()
       Dim Zeile As Long
       Dim varMonat As Byte
    
       ' Aktuellen Monat ermitteln
       varMonat = Month(Me.TextBox_Datum.Value)
    
       ' Daten in das entsprechende Monatsblatt schreiben
       With Worksheets(MonthName(varMonat))
           Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
           .Cells(Zeile, 1).Value = Me.TextBox_Datum.Value
           .Cells(Zeile, 3).Value = Me.TextBox_ENR.Value
           .Cells(Zeile, 2).Value = Me.ComboBox_Wache.Value
           ' Weitere Daten hier hinzufügen
       End With
       Unload Me
    End Sub
  3. UserForm initialisieren: Stelle sicher, dass beim Öffnen der UserForm der aktuelle Monat in der ComboBox angezeigt wird:

    Private Sub UserForm_Initialize()
       Me.ComboBox_Monat.Value = MonthName(Month(Now()))
    End Sub

Häufige Fehler und Lösungen

  • Fehler beim Übertragen der Daten: Wenn die Daten nicht im richtigen Tabellenblatt landen, überprüfe, ob die Namen der Tabellenblätter exakt mit den Monatsnamen übereinstimmen (z.B. "Januar", "Februar" usw.).

  • Typenkonflikte in der TextBox: Achte darauf, dass in der TextBox ein korrekt formatiertes Datum eingegeben wird, um Fehler zu vermeiden.


Alternative Methoden

  • Verwendung einer ListBox: Statt einer ComboBox kannst du auch eine ListBox verwenden, um die Monate anzuzeigen. Dies ermöglicht eine visuelle Auswahl, erfordert jedoch mehr Interaktion vom Nutzer.

  • Automatisierung der Wachen: Für eine automatische Auswahl der Wache könnte ein zusätzlicher Codeblock implementiert werden, der die Wache basierend auf dem Datum automatisch zuweist.


Praktische Beispiele

  1. Daten für den Monat Januar übertragen:

    • Wenn das Datum in der TextBox den Januar anzeigt, wird der folgende Code verwendet:
    If varMonat = 1 Then
       Sheets("Januar").Cells(Zeile, 1).Value = ...
    End If
  2. Bedingte Formatierung: Du kannst auch bedingte Formatierungen in den Monatsblättern verwenden, um die Schriftfarbe der Wachen automatisch anzupassen:

    If Cells(Zeile, 2).Value = "I" Then
       Cells(Zeile, 2).Font.Color = RGB(255, 0, 0) ' Rot
    End If

Tipps für Profis

  • Verwende Select Case für bessere Lesbarkeit: Statt mehrere If-Abfragen zu verwenden, kannst du Select Case nutzen, um den Code übersichtlicher zu gestalten.

    Select Case varMonat
       Case 1
           ' Januar
       Case 2
           ' Februar
       ' ...
    End Select
  • Modularisierung des Codes: Teile deinen Code in verschiedene Subroutinen auf, um die Wartbarkeit und Lesbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Daten immer im richtigen Tabellenblatt landen?
Vergewissere dich, dass die Namen der Tabellenblätter exakt mit den Monatsnamen übereinstimmen und dass du die Monatszahl korrekt ermittelst.

2. Ist es möglich, mehrere Daten gleichzeitig einzugeben?
Ja, du kannst eine Schleife verwenden, um mehrere Datensätze in einer UserForm zu erfassen und anschließend alle in das entsprechende Monatsblatt zu übertragen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige