Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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

Berichte anhand Auswahl aus ComboBox

Berichte anhand Auswahl aus ComboBox
14.12.2020 15:26:17
KölscheJung
https://www.herber.de/bbs/user/142309.xlsm
Liebe Formusgemeinde,
ich habe vor einige Zeit schon mal Hilfe von euch bekommen. Leider ist mir beim durchlaufen aufgefallen, dass dies doch mein Problem nicht vollständig löst.
Hier nochmal mein ursprünglicher Beitrag:
In der Tabelle 3 ("Leistungsmeldung") sind die Leistungen aller Mitarbeiter an allen Projekten erfasst.
Ziel ist es nun für jeden Mitarbeiter bzw jedes Projekt einen Bericht zu erstellen (Erstellung neuer Tabellenblätter für jeden Mitarbeiter bzw für jedes Projekt Commanbutton Auswertung/Bericht , dann Commandbutton Auswertung Mitarbeiter oder Auswertung Projekte. Soweit klappt das auch.
Zu meinem Problem in der Combobox CMB_AuswahlJahr (Caption Jahr) und der ComboBox CMB_AuswahlMonat (Caption Monat) möchte ich nun ein bestimmtes Jahr und einen bestimmten Monat auswählen (funktioniert auch soweit) und entsprechend nur die Leistungen in meinem Bericht erfasst haben, die auch in dem entsprechenden Jahr und Monat geleistet wurden.
Ich habe es bisher nicht geschafft eine Abhängigkeit herzustellen, so dass wirklich nur die Leistungen in dem Bericht erfasst werden, die in dem bestmmten Zeitraum erfasst wurden.
Hat vielleicht jemand eine Idee wie ich das Auswerfen der Berichte mit meiner Auswahl in den Comboboxen (CMB_AuswahlJahr und CMB_AuswahlMonat) verknüpfen kann?


im Folgenden die Antwort von Regina und der Code, der mein Problem leider nur zum Teil gelöst hat.

Hallo nach Köln,
ich habe Dir ein Möglichkeit mal in den Code "Auswertung Mitarbeiter" eingebaut. Teste mal so:
Private Sub CMB_AuswertungMitarbeiter_Click()
Dim lngZeile As Long
Dim lngZeileMax As Long
Dim wksBlatt As Worksheet
Dim LngZeilefrei As Long
Dim lng_jahr As Long
Dim str_monat As String
Application.ScreenUpdating = False
'Call Tabellenentfernen (muss noch hinzugefügt werden als Modul)
lng_jahr = Me.CMB_AuswahlJahr
str_monat = Me.CMB_AuswahlMonat
With Tabelle3
lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
For lngZeile = 2 To lngZeileMax
If wksBlattda(.Cells(lngZeile, 2).Value) = False Then
'Neuanlage
Set wksBlatt = Worksheets.Add(after:=Worksheets(Worksheets.Count))
wksBlatt.Name = .Cells(lngZeile, 2).Text
.Cells(1, 1).Copy _
Destination:=wksBlatt.Range("A11")
.Cells(1, 4).Copy _
Destination:=wksBlatt.Range("B11")
.Cells(1, 14).Copy _
Destination:=wksBlatt.Range("C11")
.Cells(1, 10).Copy _
Destination:=wksBlatt.Range("D11")
.Cells(1, 11).Copy _
Destination:=wksBlatt.Range("E11")
.Cells(1, 12).Copy _
Destination:=wksBlatt.Range("F11")
.Cells(1, 13).Copy _
Destination:=wksBlatt.Range("G11")
If Format(.Cells(lngZeile, 1), "MMMM") = str_monat And Year(.Cells(lngZeile, 1)) =   _
_
_
lng_jahr Then
wksBlatt.Cells(12, 1).Value = _
.Cells(lngZeile, 1).Value
wksBlatt.Cells(12, 2).Value = _
.Cells(lngZeile, 4).Value
wksBlatt.Cells(12, 3).Value = _
.Cells(lngZeile, 14).Value
wksBlatt.Cells(12, 4).Value = _
.Cells(lngZeile, 10).Value
wksBlatt.Cells(12, 5).Value = _
.Cells(lngZeile, 11).Value
wksBlatt.Cells(12, 6).Value = _
.Cells(lngZeile, 12).Value
wksBlatt.Cells(12, 7).Value = _
.Cells(lngZeile, 13).Value
End If
Else
'Update
Set wksBlatt = Worksheets(.Cells(lngZeile, 2).Text)
If Format(.Cells(lngZeile, 1), "MMMM") = str_monat And Year(.Cells(lngZeile, 1)) =   _
_
_
lng_jahr Then
LngZeilefrei = wksBlatt.Cells(wksBlatt.Rows.Count, 1).End(xlUp).Row + 1
wksBlatt.Cells(LngZeilefrei, 1).Value = _
.Cells(lngZeile, 1).Value
wksBlatt.Cells(LngZeilefrei, 2).Value = _
.Cells(lngZeile, 4).Value
wksBlatt.Cells(LngZeilefrei, 3).Value = _
.Cells(lngZeile, 14).Value
wksBlatt.Cells(LngZeilefrei, 4).Value = _
.Cells(lngZeile, 10).Value
wksBlatt.Cells(LngZeilefrei, 5).Value = _
.Cells(lngZeile, 11).Value
wksBlatt.Cells(LngZeilefrei, 6).Value = _
.Cells(lngZeile, 12).Value
wksBlatt.Cells(LngZeilefrei, 7).Value = _
.Cells(lngZeile, 13).Value
End If
End If
Next lngZeile
End With
Application.ScreenUpdating = True
End Sub

Zu meinem bis jetzt nicht gelösten Problem:
Wie vermeide ich, dass ein neues Tabellenblatt geöffnet wird, wenn in dem ausgewählten Zeitraum keine Leistung erfasst worden ist?
Bsp.: Auswahl anhand der ComboBox: Jahr "2020", Monat "Oktober"
CommandButton: "Auswertung Projekte".
Es öffnet sich nun auch für Projekt A ein Tabellenblatt, obwohl keine Leistung zu erfassen ist. Das öffnen von Tabellenblättern, die keine Leistung in dem bestimmten Zeitraum beinhalten (in diesem Fall für Projekt A soll vermieden werden. Leider weiss ich aufgrund meiner bescheidenen VBA Kenntnisse nicht, wie und an welche Stelle ich die Bedingung dafür einbaue. Ich wäre euch unheinlich dankbar, wenn mir jemand eine kleine Hilfestellung geben könnte.
Mit den besten Grüßen aus Köln und vielen Dank im Voraus.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berichte anhand Auswahl aus ComboBox
14.12.2020 19:58:17
Yal
Hallo Jung,
ich glaube, Du versuchst das Rad neu zu erfinden. Wenn Du Berichte und Auswertung Mithilfe von Pivottabelle gestaltet, spartst Du dir eine Menge Arbeit.
Idee: anstatt zu vermeiden eine leere Tabelle entstehen zu lassen, diese entstehen lassen, Ergebnis prüfen und wenn leer wieder löschen.
Mit einer
Application.ScreenUpdating = False
Application.ScreenUpdating = True

vermeidest Du eine eventuell hässliche Anzeige dazwischen.
Viel Erfolg
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige