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

Durchlaufgeschwindigkeit erhöhen

Durchlaufgeschwindigkeit erhöhen
15.11.2023 12:16:48
koelschejung
Liebe Forumsgemeinde,
ich habe leider noch ein kleineres Problem bei der Auswertung meiner Leistungsmeldung. Oberschlumpf und Ralf_b hatten mir einwandfreie Lösungen geliefert (Spende an die Tafel meiner geliebten Heimatstadt ist raus ;) )

Hier der Link zu dem mittlerweile im Archiv liegenden Thread: https://www.herber.de/forum/archiv/1952to1956/1952834_Durchlaufgeschwindigkeit_erhoehen.html#1952868
Kurze Erklärung: Durch einen Click auf den Button "Auswertung" auf dem Tabellenblatt "Leistungsmeldung" gelangt man auf eine Maske in der drei Optionen zur Auswertung dargestellt sind. Dort wird eine Auswahl getroffen (bspw. Jahr: 2021; Monat: Januar) und mit einem Click auf den Button "Auswertung Mitarbeiter" wird die intelligente Tabelle anhand der ausgewählten Bedingungen nach Übereinstimmungen durchsucht.

Am Wochendende habe ich mir den Code von Oberschlumpf für die Auswertungsoption "Auswertung Mitarbeiter" im Detail angeschaut um den Code für die in der UserBox stehenden anderen zwei Auswertungsoptionen ("Auswertung Projekte" und "Auswertung bestimmtes Projekt") zu nutzen und entsprechend anzupassen. Für die Option "Auswertung Projekte" habe ich es hinbekommen.

Zu meiner konkreten Frage: Anders als bei der Auswertung Mitarbeiter" und "Auswertung Projekte" wo in dem Code von Oberschlumpf zunächst mit einem Array eine Mitarbeiter und Projekt Liste anhand der Daten erstellt wird, ist dies bei der Auswahloption "Auswertung bestimmtes Projekt" nicht erforderlich, da die Daten nur nach dem in der Auswahlmaske angegebenen Projekt durchsucht werden. Ich benötige also eine Array Variable, die ausschließlich die Zeilennummer, in der der Eintrag gefunden wurde, gesammelt wird. Ich habs bisher leider nicht hinbekommen, dass in eine Code Zeile zu übertragen.

Im Folgenden findet ihr zunächst den Code aus dem hervorgeht an welcher Stelle ich nicht weiterkomme. Über Hilfestellungen würde ich mich freuen. Noch besser wäre ien kurzer Kommentar dazu, da ich die Vorgehensweise gerne nachvollziehen würde.

Option Explicit


'3. Möglichkeit: ein bestimmtes Projekt in einem bestimmten Zeitraum (DatumAnfang bis DatumEnde).
'1. Bedingung, dass es sich um das in der Einagbemaske angegebene Projekt handelt: Erfasst in dem Tabellenblatt "Leistungsmeldung" SpalteD
'2. Bedingung, dass die Leistung in dem in der Eingabemaske angegebenen Zeitraum (DatumAnfang bis DatumEnde)liegt.
Sub sbLeistungBestimmtesProjekt(ByVal DatumAnfang As Integer, ByVal DatumEnde As Integer, ByVal Projekt As String)

Dim lshLeistung As Worksheet, lloRow As Long, lshSourceSpecProj As Worksheet

'Dim larstrMA() As String, liIdxMA As Integer, lboExist As Boolean
'Dim larMAData(), liIdxMAData As Integer
'Dim lloRowNext As Long

'Bildschirmaktualisierung ausschalten für Verbesserung der Geschwindigkeit des Codes
Application.ScreenUpdating = False

'bisherige Tabellen zur Auswertung entfernen
TabellenEntfernen
'alle ausgeblendeten Tabellenblätter einblenden
Einblenden
'mit der Set-Anweisung wird ein spezifisches Objekt (in dem Fall die jeweiligen Arbeitsblätter) zugewiesen.
Set lshLeistung = Sheets("Leistungsmeldung")
Set lshSourceSpecProj = Sheets("Auswertung Bestimmmtes Projekt")

With lshLeistung
'Vorgehensweise im Vergleich zu den anderen 2 Möglichkeiten der Auswertung, es muss keine Miatarbeiterliste oder Projektliste erstellt werden.
'Mit einer For Next Schleife wird das Tabellenblatt "Leistungsmeldung" nach Treffern durchsucht, die die Kriterien Projekt und Zeitraum (DatumAnfang und DatumEnde)erfüllen
For lloRow = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row
'wenn ein MA-Eintrag gefunden UND Monat in Tabelle der selbe ist wie ausgewählt UND auch das Jahr stimmt, dann...
If .Range("D" & lloRow).Value = Projekt And _
Format(.Range("A" & lloRow).Value, "dd.mm.yyyy") >= DatumAnfang And _
Format(.Range("A" & lloRow).Value, "dd.mm.yyyy") >= DatumEnde Then
'Vorgehensweise ab hier???
'In einer Array-Variable die Zeilennummer sammeln, in der der Eintrag gefunden wurde?
'Wie drücke ich das nun aus?






'Vorgehensweise ab hier ist ja dann wieder ähnlich wie bei "AuswertungMitarbeiter" und "AuswertungProjekte".
'Das sollte ich dann irgendwie selber hinbekommen. Hoffe ich zumindest ;)

'wenn es in der zusätzlichen Arr-Variable keine Einträge gibt, dann...
If UBound(larMAData, 2) = 0 And larMAData(0, 0) = "" Then
'...erscheint eine entsprechende Meldung, und...
MsgBox "Für " & monat & "/" & jahrzahl & " konnten keine Mitarbeitereinträge ermittelt werden."
'...das Makro wird beendet
Exit Sub
'gibt es doch Einträge in Arr-Var, dann...
Else
'...muss der letzte, leere Platz in Arr-Var wieder gelöscht werden
ReDim Preserve larMAData(1, UBound(larMAData, 2) - 1)
End If


'wenn bis hier alles erfolgreich, dann haben wir genau das, und nur das, was du benötigst: nämlich Name des MA, und, noch wichtiger, nur all die Zeilennummern, in denen MA-Name, Monat + Jahr gleichzeitig in einer Zeile enthalten sind

'mit For/Next werden all die gesammelten Einträge aus der zusätzlichen Arr-Var durchlaufen
For liIdxMAData = 0 To UBound(larMAData, 2)
'wenn das gerade aktive Blatt z Bsp nicht "Mitarbeiter1" heißt, dann...
If ActiveSheet.Name > larMAData(0, liIdxMAData) Then
'...weiß der Code, es gibt das Blatt noch nicht und fügt es deiner Datei hinzu (es wird nur eine Kopie deiner Vorlage ans Ende der Datei positioniert) und...
lshSourceMA.Copy after:=Sheets(Sheets.Count)
'...Kopie der Vorlage erhält auch gleich den Namen des MA
ActiveSheet.Name = larMAData(0, liIdxMAData)
'...es werden die Stammdaten, wie aktuelles Datum, MA-Name, Jahr + Monat in den entsprechenden Zellen eingetragen
Range("G3").Value = Date
Range("B7").Value = larMAData(0, liIdxMAData)
Range("B8").Value = jahrzahl
Range("B9").Value = monat
'es wird die erste Zeile für die Datenzeilen festgelegt (in Bsp-Datei is es eigtl immer 12, aber wer weiß, ob das im Original auch immer so ist^^ :-)
lloRowNext = Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
'im neuen Blatt, z Bsp "Mitarbeiter1", erhalten die Zellen in den Spalten A,B,C immer die Werte aus Blatt "Leistungsmeldung" aus den Zellen in den Spalten A,D,N (Zeile = immer die Zeile, die in der Arr-Var gesammelt wurde)
Range("A" & lloRowNext).Value = .Range("A" & larMAData(1, liIdxMAData)).Value
Range("B" & lloRowNext).Value = .Range("D" & larMAData(1, liIdxMAData)).Value
Range("C" & lloRowNext).Value = .Range("N" & larMAData(1, liIdxMAData)).Value
'die Anzahl in Spalte D soll numerisch mit 2 Kommastellen sein; a) Spalte D erhält Wert aus Spalte J, b) Format wird auf "0,00" eingestellt
With Range("D" & lloRowNext)
.Value = lshLeistung.Range("J" & larMAData(1, liIdxMAData)).Value
.NumberFormat = "0.00"
End With
'die jeweils verwendete Einheit in Spalte E soll rechtsbündig sein; a) Spalte E erhält Wert aus Spalte K, b) Eintrag wird rechtsbündig formatiert
With Range("E" & lloRowNext)
.Value = lshLeistung.Range("K" & larMAData(1, liIdxMAData)).Value
.HorizontalAlignment = xlRight
End With
'Spalte F erhält Wert aus Spalte L, Spalte G erhält Wert aus Spalte M
Range("F" & lloRowNext).Value = .Range("L" & larMAData(1, liIdxMAData)).Value
Range("G" & lloRowNext).Value = .Range("M" & larMAData(1, liIdxMAData)).Value
lloRowNext = lloRowNext + 1
If liIdxMAData UBound(larMAData, 2) Then
'wenn in Arr-Var der nächste MA-Name anders ist als Name des aktuellen Blattes, dann...
If ActiveSheet.Name > larMAData(0, liIdxMAData + 1) Then
'...weiß der Code: alle Einträge für z Bsp "Mitarbeiter1" wurden eingetragen, nun...
With Range("G" & lloRowNext)
'...fehlt noch in Spalte G die Summenformel, die mit der nächsten Codezeile hinzugefügt wird, und...
.Formula = "=Sum(G12:G" & lloRowNext - 1 & ")"
'...Ergebnis der Summe wird FETT dargestellt
.Font.Bold = True
End With
End If
Else
With Range("G" & lloRowNext)
.Formula = "=Sum(G12:G" & lloRowNext - 1 & ")"
.Font.Bold = True
End With
End If
Next

End With

'alle eingeblendeten Tabellenblätter, die nicht benötigt werden, ausblenden.
Ausblenden

Application.ScreenUpdating = True

Set lshLeistung = Nothing
Set lshSourceMA = Nothing

End Sub




Hier noch die Beispieldatei:
https://www.herber.de/bbs/user/164303.xlsm
Ich danke euch im Voraus für Eure und Oberschlumpfs Mühe.

Beste Grüße aus Köln
Roman


19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
15.11.2023 12:53:16
daniel
HI
also bei knallts schon, wenn ich den Button drücke, weil du hier
Sub sbLeistungBestimmtesProjekt(ByVal DatumAnfang As Integer, ByVal DatumEnde As Integer, ByVal Projekt As String)

für den Datumwert den falschen Datentyp verwendest.
Für Datumswerte gibt es den Type DATE, oder wenn einen Zahlentyp verwenden willst, dann nimm LONG.
Bei Integer ist der Zahlenraum zu klein, denn Integer ist nur bis 32767 definiert, wir haben aber schon 45245
Sind da noch mehr so Fehler drin?
Sowas bitte selber bereinigen.

Gruß Daniel
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
15.11.2023 13:05:13
Oberschlumpf
Moin Roman,

ja, Daniel hat schon recht: Datumswerte müssen auch als Variable des Typs Datum (Date) weitergegeben werden.
Aber sein letzter Hinweis a la: "...so was bitte selbst korrigieren..." (oder ähnlich) - jaaa, wäre sicher schön - aaber - wenn du, wie angegeben, erst bescheidenes VBA-Wissen hast (wobei hier ja die Definition seeehr fließend sein kann^^ :-) ), dann kann es durchaus sein, dass du SOLCHE Fehler vielleicht in einigen STUNDEN findest - Daniel + auch ich haben nur Sekunden gebraucht ;-)

Nun denn, ich bastel ja schon an...ähh...deinem VERSUCH^^ :-) Wird diesmal aber länger dauern. Aber ich denk, ich schaff das - bevor - auch dieser Beitrag im Archiv verschwindet.

Und außerdem....vllt traut sich ja noch der eine oder die andere Helferin hier ran.

Ciao
Thorsten
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
15.11.2023 15:46:59
daniel
test
AW: Durchlaufgeschwindigkeit erhöhen
15.11.2023 16:50:06
koelschejung
Im Folgenden nochmals der (unveränderte) Beitrag für den ich einen neuen Thread eröffnet habe da ich über "Deine Threads" keine Antwortmöglichkeit hatte. Meine Mutmaßung dieser sie gesperrt worden, war falsch. Über den "Listenmodus" ist es mir weiterhin möglich zu antworten. Sorry

Zunächst vielen Dank für deinen Beitrag und den Hinweis zu dem falsch verwendeten Datentyp. Ich finde es allerdings schade, dass der Thread direkt gesperrt wird ohne mir die Möglichkeiten zu geben, mich dazu zu äußern.
Ich habe den Thread "Durchlaufgeschwindigkeit erhöhen" genannt, da mein im Archiv gelandeter Thread so benannt war (siehe hierzu https://www.herber.de/forum/archiv/1952to1956/1952834_Durchlaufgeschwindigkeit_erhoehen.html#1952868). In diesem Thread ist auch der Link der Beispieldatei mit dem ursprünglichen Code. Dieser unterscheidet sich natürlich von dem Code den mir ein Forumsmitglied als Antwort auf meinen vor drei Jahren zusammengebsastelten Code (aus dem Internet, dem Lehrbuch von Bernd Held und durch Hilfe dieses Forums) runtergeschrieben hat. Den Code des Forumsmitglieds habe ich versucht nachvollziehen. Dies ist mir nur in Teilen gelungen, habe aber trotzdem den Versuch gewagt den modifizierten Code auch auf meine anderen Auswahloptionen anzuwenden.

Ich wäre also dankbar, wenn der Thread nochmals geöffnet wird. Ich erwarte natürlich keine fertige Lösung, benötige aufgrund meiner äußert bescheidenen VBA-Kenntnisse allerdings Unterstützung.
Der kleine Hinweis von Daniel hat mir schon geholfen, dass ich mich nach der Arbeit wieder dransetze und Schritt für Schritt weiterkomme.

Vielen Dank und beste Grüße aus Köln
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
15.11.2023 18:34:23
Oberschlumpf
Hi Roman,

bin gerade verwirrt ob deines Sperr-Hinweises.
Und auch Daniel hatte eine Antwort mit "nur" test im Text gegeben.

Konnte man zeitweise hier - im neuen Beitrag - nicht mehr antworten, oder meintest du den Archiv-Beitrag, der deiner Meinung nach gesperrt ist?
Archiv = Ja = Antwort dort nicht mehr möglich = war schon immer so :-)
Antwort hier im neuen Beitrag nicht möglich = da war Hans wohl mal wieder am "ein-bisschen-kaputt-basteln" :-)) (nix für ungut, Hans! ;-) ) = da wär ich aber auuch verwirrt = aber nun scheint das hier Antworten ja wieder möglich zu sein.

Nun denn, lass uns gespannt sein, wo uns unsere Ideen noch hinbringen werden :-)
Wenn ich wieder so weit bin...antworte ich aber weiter dort, wo meine letzte Antwort steht.

Bis dann
Thorsten
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
15.11.2023 13:40:21
daniel
HI Thorsten

naja, ich gleiche den "angeblichen" Wissenstand immer mit dem vorliegenden Makro ab und bei Fragen in einem kostenlosen Forum gehe ich auch immer davon aus, dass dieses vom Fragesteller selbst geschrieben wurde, und dann sollten Wissensstand und gezeigter Code zusammenpassen.
Wer solchen Code erstellt, ist nicht mehr bei bescheidenem Wissen.

Außerdem, warum war die Frage nicht "ich bekomme beim Klicke auf den Button den Fehler Überlauf?" ?
Wenn die Frage ist "Durchlaufgeschwindigkeit erhöhen", dann sollte man davon ausgehen, das das ganze Projekt zumindest mal funktioniert und das gewünschte Ergebnis liefert, aber nicht schon an solchen Stockfehlern scheitert.

da sind einfach zu viele Ungereimtheiten im ganzen, die mich stutzig machen.

Gruß Daniel
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
16.11.2023 08:32:34
Oberschlumpf
Hi Roman,

hier bin ich schon wieder! :-)
Ging doch alles sehr viel schneller als ich dachte

Hab so Einiges geändert - z Bsp dein Userform hat keine Textboxen mehr!^^ :-) (bzw, ich hab diese erst mal deaktiviert)
Aber die weitreichendste Änderung, so finde ich:

Im Userform-Initialize-Ereignis hast du Code zum Befüllen der ComboBoxen, der sich soooo oft wiederholt - mit nur 2 Unterschieden: Name der CMB + Spaltennr, aus der die CMB's ihre Listeninhalte erhalten.

Ich hab eine "Unter-Sub" programmiert, in der es keine Code-Wiederholungen gibt; die 2 genannten Unterschiede werden als Parameter übergeben.
Detail-Erklärungen dazu findest du im Code als Kommentare.
Ach so^^ :-) Ich hab dir "nur" den Ansatz für 3 ComoBoxen gezeigt - für's Dazulernen ist Selbstmachen - für die anderen 4 ComboBoxen - angesagt :-)

Hier, guck mal...
https://www.herber.de/bbs/user/164330.xlsm

Wenn du etwas nicht hinbekommst = natürlich kannst du fragen! Natürlich und erst recht auch dann, wenn ich doch noch Fehler hinterlassen habe, die mir selbst noch nicht aufgefallen sind :-)

Hilfts?

Ciao
Thorsten
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
16.11.2023 14:46:42
koelschejung
Hallo Thorsten,
vielen lieben Dank für deine Mühe. Bin dir unfassbar dankbar. Deine Ansätze/Lösungen motivieren, mich auch in Zukunft mehr mit VBA zu beschäftigen. Wahsinn was alles möglich ist über VBA, wenn man es, wie du, beherrscht.
Leider schaffe ich es arbeitsmäßig erst am Wochenende mich ausführlich mit deinen Codes zu beschäftigen.
Dann versuche ich alles nachzuvollziehen und auch den Code für die restlichen 4 ComboBoxen entsprechend anzupassen.
Dir noch eine angenehme Woche.
Werde dich diesen Samstag auch nicht vom einkaufen abhalten ;)
Liebe Grüße aus Köln
Roman
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 10:42:15
koelschejung
@ Thorsten
Vielen Dank nochmals auch für die Gedanken, die du dir über den eigentlichen Code hinaus gemacht hast. Bei "Auswertung Bestimmtes Projekt" sollen ggf. monatliche Abschlagsrechnungen erstellt werden. Dadurch, dass in der ComboBox nur die Daten aufgelistet sind, an denen auch Leistungen erfasst werden, wird nicht immer die Auswahl des ersten und letzten Tages des Monats möglich sein. Die optimale Lösung wäre ein Kalender in dem ich durch Klicken den gewünschten Zeitraum auswählen kann (also nicht wie in meiner ursprünglichen Datei durch TextBox.). Gibts Argumente, die dagegen sprechen? Fehlerhafte Tipp- und/oder sonstige Eingabefehler durch eine TextBox wird durch die Auswahl über einen Kalender vermieden, so dasss kein zusätzlicher Aufwand für weitere Codes, um potenzielle Fehler zu überwachen, entsteht!? Im diesem Forum hattüber einen in der UserForm angezeigten Kalender schon mal gesehen gehabt. Ich würde mich dran setzen und versuchen deinen Code für AuswertungBestimmtesProjekt anzupassen. Den Code der 4 weiteren ComboBoxen für die anderen beiden Auuswahlmöglichkeiten (Auswertung Projekte und Auswertung Mitarbeiter) werde ich, wie von Dir in den VBA Kommentaren erklärt, anpassen.
Dir schon jetzt ein angenehmes Wochenende.
Beste Grüße
Roman
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 12:51:11
koelschejung
Oke so wie gedacht wird es nicht funktionieren. Unter den Steuerelementen ist gar kein Kalender. Gibt es dann nur die Lösung über manuelle Datumseingabe in einer Textbox?
AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 13:08:05
daniel
Hi
eine Kalenderauswahlbox gabs mal in den Steuerelementen.
Die hat Microsoft aber wieder rausgenommen (warum auch immer)
mit den vorgefertigten Steuerelementen bleibt dir nur die Eingabe über Textbox.
oder du baust dir selber was.
der einfachste Falle wären drei Listboxen, eine fürs Jahr, eine für den Monat und eine für die Tage.
Mit etwas mehr aufwand kannst du dir das Kalendersteuerelement für die schnelle Datumssauswahl auch als eigene Userform mit den Standardelementen selber zusammenprogrammieren. Wenn du etwas suchst, solltest du den Code bzw Beispieldateien zum rauskopieren im Netz finden können.
Gruß Daniel
Anzeige
AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 14:15:45
koelschejung
Hallo Daniel,

leider gerade erst deine Nachricht gelesen. Vielen Dank für deine Hilfe. Ich habe jetzt zunächst die einfache Lösung über die TextBox gewählt. Den Code für einen Kalender über die UserForm habe ich über die Suchfunktion finden können. Perfekt! Werde ich mir zeitnah im Detail anschauen.
AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 14:11:37
koelschejung
Es läuft jetzt erstmal alles über die Eingabe des Datums über eine TextBox. Die kleinen Anpassungen im Code habe ich tatsächlich selbst mal hinbekommen ;). wie oben geschrieben, werde ich am Wochenende dann den Code der 4 weiteren ComboBoxen für die anderen beiden Auuswahlmöglichkeiten (Auswertung Projekte und Auswertung Mitarbeiter), wie von Dir in den VBA Kommentaren erklärt, anpassen.
Die ein oder andere kleine Verständnisfrage werde ich haben und mich dann an dieser Stelle melden.
Bereits jetzt, nochmals vielen, vielen Dank für deine/eure Hilfe.

AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 13:03:16
Oberschlumpf
Hi Roman,

n paar Fragen zu deinem neuen (Kalender)Plan:

1. Wenn z Bsp erste Leistung am 05.01.2023 und letzte z Bsp am 23.01.2023 erbracht wurde, wieso musst du dann trotzdem den 01.01.2023 (oder 02.01) und 31.01.2023 auswählen können?
Eine Berechnung beginnt doch immer bei der 1. Leistung und endet mit der letzten, nicht aber beim ersten + letzten ausgewählten Tag, oder?
Und dein Hinweis "nich möglich, 1. + letzte Monatstag auswählbar" erübrigt sich doch mit der Tatsache: Wähle 1. verfügbare + letzte, genutzte Tag eines Monats aus, oder?

Na ja, ich sollte erwähnen, dass ich vom Kaufmännischen fast keine Ahnung habe. Vielleicht ist es "in eurer Welt"^^ :-) ja so, dass es ein MUSS ist, den 1. + letzten Tag eines Monats anzugeben - egal auch dann, wenn im gewählten Monat z Bsp an nur 3 Tagen "Leistung" erbracht wurde :-)
Wenn ich mit dieser Vermutung recht hab, ja, dann wäre die Verwendung eines Kalenders sicher sinnvoller als die bisherige Lösung.

---break :-)---während ich hier am antworten war, kam ein Anruf dazwischen---und während ich telefonierte, kam deine 2. Antwort, von wegen "kein Kalender usw" :-)---

2. Und ja genau, bzgl Kalender sollte mein 2. Frage sein ;-)

Ja, ich weiß, es gibt seit Version ??? kein Kalendersteuerelement mehr in Office - gabs früher, war auch sehr hilfreich.
Du hast 2 Möglichkeiten:

a) erstell in einem extra Userform deinen eigenen Kalender mit allen erforderlichen Controls (Tage, Monat, Jahr, usw usw)
nicht ganz so gut = viel Arbeit
gut = sieht toll aus UND hilft sehr in der täglichen Arbeit, wenn dein Userform korrekt programmiert ist

b) nutz jeweils für Start- und Ende-Datum einfach nur 3 ComboBoxen (Tag/Monat/Jahr)
nicht ganz so gut = sieht bei weitem nich so schön aus, wie der selbst gebaute Kalender!
gut = hilft aber genau so wie ein Kalender

DU entscheidest, ob du a) oder b) willst :-) (bei a) bau aber nich ich für dich das Kalender-Userform^^! :-) )

Ciao
Thorsten
AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 14:26:47
koelschejung
Hi Thorsten,
sorry, auch deinen Beitrag habe ich jetzt erst gesehen.
Ich habe jetzt zunächst die einfache Lösung über eine Textbox gewählt. Über die drei ComboBoxen gefällt mir allerdings dann doch besser. Werde ich am Wochenende versuchen selbst hinzubekommen.
Zeitnah probiere ich mich dann mal an dem Kalender. Über die Suchfunktion habe ich bereits einen fertig programmierten finden können.
Ich habe auch die ein oder andere Weiterentwicklung für die Auswertungen im Kopf an denen ich mich versuchen werde und dann konkrete Fragen ggf. in einem neuen Thread stellen werde.
Werde an dieser Stelle nach dem WE nochmals eine Rückmeldung geben und dann die (vorerst) fertige Datei hier hochladen. Ggf. kann die für andere Nutzer in Zukunft hilfreich sein.
Bis jetzt, danke schon mal für alles.
Hätte mit diesem Ausmaß deiner Hilfe niemals gerechnet und bin unheimlich dankbar.
Viele Grüße
Roman
AW: Durchlaufgeschwindigkeit erhöhen
17.11.2023 15:58:57
Oberschlumpf
Moin Roman,

alles gut, ich hatte ja Zeit + vor allem Lust, dein Problem zu lösen :-)
Und vor allem - ICH war im Vorteil! - Kam doch schon von mir selbst der meiste Code in der Datei. Und so war Einlesen + Verstehen + Ändern für mich gar kein Problem.

In einer anderen Antwort von dir hab ich das hier gelesen:
"...den Code der 4 weiteren ComboBoxen für...(Auswertung Projekte und Auswertung Mitarbeiter)..."

Ich glaub, da hattest du mich miss(t)verstanden :-)
Die von mir beschriebene/vorgeschlagene Codeänderung (dein alter/mein neuer Code) bezog - sich nur - auf dein neues Problem bzgl sbLeistungBestimmtesProjekt.
Die Codeänderung würde gar nicht für Auswertung Projekte/Auswertung Mitarbeiter funktionieren.
Also: änder, wenn du willst, den alten Code nur für "...BestimmtesProjekt", aber tu dir nicht den Versuch an, alles an Code für alles anzupassen :-)

Ciao + schönes WE + bis bald^^ :-)
Thorsten
AW: Durchlaufgeschwindigkeit erhöhen
21.11.2023 15:57:27
koelschejung
@ Oberschlumpf
Vielen Dank für den Hinweis Thorsten.
Ich muss da leider nochmals nachhaken. Auch wenn ich den Code jetzt erstmal nicht gem. deines Vorschlags angepasst habe, würde ich mein Verständnis/Ausdrucks-Problem gerne kurz klären.
Die UserForm3 "Auswertung/Bericht" wird mit Daten aus Tabelle3("Leistungsmeldung") für die Möglichkeit1: Auswertung Projekte (CMB Auswahl Jahr, CMB Auswahl Monat), Möglichkeit2: Auswertung Mitarbeiter (CMB Auswahl Jahr, CMB Auswahl Monat) und Möglichkeit3: Auswertung bestimmtes Projekt (CMB Datum Start, CMB Datum Ende, CMB Auswahl Projekt )befüllt.

Und jetzt meine Interpretation: ;)
Im betreffenden Abschnitt (ganz unten der UserForm3) hast du einen alternativen Code für alle 7, durch mich bisher jeweils einzeln mit 5 Code Zeilen angesprochenen ComboBoxes, geschrieben. Die bisher durch dich nicht angepassten Bestandteile des Codes sollte ich dann gem. deiner Vorgehensweise für die restlichen 4 verbleibenden ComboBoxen anpassen. Den UnterSub den du beispielhaft in "Auswertung Bestimmtes Projekt" geschrieben hast müsste ich dann im Anschluss noch in "Auswertung Projekte" bzw. "Auswertung Mitarbeiter" (natürlich angepasst) übernehmen!?
Schreib mir einfach nur einen Zweizeiler als Antwort. Das letzte was ich will ist, dass du jetzt noch mehr Zeit investierst damit ich endlich begreife was du meinst. ;)
Ich wünsche einen angenehmen Feierabend und nochmals beste Grüße aus Köln.
Vielen Dank für Alles
Roman

AW: Durchlaufgeschwindigkeit erhöhen
21.11.2023 17:41:41
Oberschlumpf
Hi Roman,

"...Den UnterSub den du beispielhaft in "Auswertung Bestimmtes Projekt" geschrieben hast müsste ich dann im Anschluss noch in "Auswertung Projekte" bzw. "Auswertung Mitarbeiter" (natürlich angepasst) übernehmen!?..."

Du hast mich noch immer nicht verstanden :-)

Im UserForm_Initialize-Ereignis von Userform3 werden - nur - alle ComboBoxen in Userform3 mit Daten befüllt.
All das Ganze hat nix mit dem eigentlichen Erstellen der später sichtbaren, immer wieder neuen Tabellenblätter für "Auswertung Bestimmtes Projekt", "Auswertung Projekte" und "Auswertung Mitarbeiter" zu tun.

Das Erstellen und Befüllen der neuen Tabellenblätter wird nur über den jeweils zugewiesenen CommandButton gestartet.

Wenn du es hinbekommst, deinen alten Code (jeweils 5 Codezeilen) für die restlichen 4 ComboBoxen so zu ändern, dass auch daraus nur eine einzige Codezeile wird (in Verbindung mit meinem UnterSub), dann hast du alles getan, was noch getan werden könnte.

Ändere rein gar nix am Code für "Auswertung Projekte" und "Auswertung Mitarbeiter".

Ciao
Thorsten

...wenn du willst, dass ich deine Antwort hierauf noch lesen können soll, dann antworte etwas schneller...weil...sonst..du kennst es...der Beitrag im Archiv verschwindet...und du dann vllt nich mehr antworten kannst :-)
AW: Durchlaufgeschwindigkeit erhöhen
26.11.2023 13:51:40
koelschejung
Hallo Thorsten,
habe leider erst jetzt die Zeit gefunden nochmals reinzuschauen und mir den von Dir in der Untersub geschriebenden Code anzuschauen. Natürlich muss der Code nicht auf die anderen beiden Möglichkeiten angepasst werden. Dass der Untersub in dem Modul "AuswertungBestimmtesProjekt" steht, hat mich das fälschlicherweise glauben lassen. Ich habe den Code in ein separates Modul geschoben. Die restlichen vier Codezeilen (anstatt der in Summe 20 Zeilen) habe ich tatsächlich selber hinbekommen. Es läuft alles einwandfrei. ;)
Ich danke dir nochmals für deine Mühe und Geduld.
Liebe Grüße aus Köln
Roman

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige