Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1384to1388
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

Werte via VBA eintragen

Werte via VBA eintragen
22.10.2014 14:39:19
NoPa
Hallo,
ich habe folgendes Problem!
Anbei die Liste/Diagramm
https://www.herber.de/bbs/user/93289.xlsm
Ich muss via VBA einen Vergleich erstellen, der sich wöchentlich ändert.
Meine Vorarbeit: Eine Abfrage wird in einer festen Form in Excel angelegt. Diese Tabelle muss ich in meine Liste in die Mappe des jeweiligen Mitarbeiters kopieren. Wenn dies geschehen ist soll meine Makro mittels Knopfdruck auf den Button gestartet werden.
Mein Makro soll folgendes ausführen!
Diese Werte aus Spalte „G“ (z.B. aus Mappe „Hans“ ) soll der Kalenderwoche endsprechend in die „Vergleich“ Mappe in die gelbe Zeile (Istumsatz) übertragen werden.
Problem ist, dass ich die Eintragung z.B. von KW2014/40 bis 2014/52 eintragen muss.
Bis jetzt kann ich nur jede einzelne KW ansprechen! Gewünscht ist dass ich z.B. KW 2014/40 bis 2014/52 oder bzw. die letzte KW der Abfrage eintragen lasse!
Zu bedenken ist aber auch, dass monatlich ein neues Monat dazu kommt und ein altes Monat weg fällt! Darum arbeite ich mit der „Find“ Funktion.
Gestartet wir die Eintragung über den Button Eintragung starten!
Bitte um Hilfe!
Danke
Gruß
Norbert

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte via VBA eintragen
26.10.2014 11:08:27
fcs
Hallo Norbert,
leider ist hier wahrscheinlich das Kind bereits in den berühmten Brunnen gefallen, weil man sich auf eine bestimmte Form der Darstellung/Auswertung festgelegt hat.
Ich persönlich hätte dafür gesorgt, dass die Basis-Daten so aufbereitet werden, dass sie per Pivot-Tabellenbericht/Diagramm nach Mitarbeiter/Jahr/Monat/KW ausgewertet werden können. Dann bräuchte man sich bei der Auswertung "nur" um den auszuwertenden Zeitraum kümmern.
Um in deinem Fall weiter zu kommen solltest du folgendes machen.
1. Erstelle auf einem separaten Hilfs-Blatt eine Liste mit folgenden Inhalten:
Spalte A: Namen = Name/Bezeichnung die im Blatt "Vergleich" gesucht wird, um die Zeile zu finden in der die Daten eingetragen werden sollen.
Psalte B: Tabellenname = Name des Tabellenblatts in dem die Daten zu dem in Spalte A stehenden Namen stehen.
2. Passe dein Userform so an, dass eingegeben werden können:
- Datum des 1. Tags der 1. KW
- Datum des 1. Tages der letzte KW
des zu bearbeitenden Zeitraums.
Da du ja auch Zeiträume über den Jahreswechsel bearbeiten muss, wenn du den darzustellenden Zeitraum jeweils um einen Monat verschieben muss, ist die KW kein geeigneter Zähler für Schleifen. Hier funktioniert das Datum besser, das man ja in 7er Schritten hochzählen kann, um Wochenschritte zu erhalten.
Die KW in der Schleife muss dann berechnet werden.
3. Makro-Ergänzungen:
Das Makro im Userform, das die Daten aus den Namens-Blättern ins Vergleichsblatt kopiert muss jetzt so ergänzt werden.
In einer äußeren For-Next-Schleife werden die KW abgearbeitet
In einer inneren die Namen auf dem Hilfsblatt
Zusätzlich sollte man auch prüfen, ob die Eingabedaten vollständig und formal korrekt sind.
Ich hab deine Datei mal entsprechend ergänzt/angepasst.

Die Datei https://www.herber.de/bbs/user/93376.xlsm wurde aus Datenschutzgründen gelöscht


Ich hoffe, dies ist eine Basis, auf der du aufbauen kannst.
Gruß
Franz

Anzeige
AW: Werte via VBA eintragen
28.10.2014 07:09:44
NoPa
Hi,
danke für deine Bemühungen! Aber das haut nicht hin.
Jedesmal wenn ich ein Datum in das Userform eintrage bringt er mir gleich nen Fehler ohne das ich etwas mache!
Private Sub tbKW1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With tbKW1
If .Value = "" Then
ElseIf IsDate(.Value) Then
.Value = Format(CDate(.Value), "YYYY-MM-DD")
'KW in Hilfstabelle berechnen
wksHilf.Range("Hilf_Datum").Value = CDate(.Value)
wksHilf.Range("Hilf_KW").Calculate
  Me.tbWochtag1 = Format(CDate(.Text), "DDDD") & _
" KW " & Format(Year(CDate(.Value)), "0000") & "/" & Format(wksHilf.Range(" _
Hilf_KW").Value, "00")
Else
MsgBox "Bitte ein gültiges Start-Datum eingeben"
Cancel = True
End If
End With
End Sub

Das markiert er mir immer! Ich komm nicht weiter!
Gruß
Norbert

Anzeige
AW: Werte via VBA eintragen
28.10.2014 14:15:21
fcs
Hallo Norbert,
ich hab deine Datei mit Excel 2010 bearbeitet.
Evtl. passt da irgendetwas nicht, wenn du die Datei jetzt unter Excel 2007 öffnest.
Prüfe mal im VBA-Editor für die Datei unter Menü "extras -- Verweise..." die aktivierten Verweise.
Diese sollten sein:
Visual Basic for Applications
Microsoft Excel x.y Object Library
Ole Automation - nicht unbedingt erforderlich
Microsoft Office x.y Object Library
Microsoft Forms 2.0 Object Library
Ref Edit Control - nicht unbedingt erforderlich
x.y steht für die installierte Version von Office/Excel
ist 14.0 bei Excel 2010 und sollte bei Office 2007 wohl 12.0 sein.
Wenn eine der Objektbibliotheken nicht aktiviert ist, dann musst du sie in der Auswahlliste markieren (Checkbox anklicken) und mit OK aktivieren.
Ein anderer Grund fällt mir jetzt nicht ein, da die Datei bei mir ja ohne Fehlermeldung funktioniert.
Alternativ kannst du in der/den Problemzeilen mal den Referenz-Verweis für die integerierte Funktion Year voranstellen.
            Me.tbWochtag1 = Format(CDate(.Text), "DDDD") & _
" KW " & Format(VBA.Year(CDate(.Value)), "0000") & "/" _
& Format(wksHilf.Range("Hilf_KW").Value, "00")
Das ist aber nur Kurieren ohne das Grundproblem zu beseitigen.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige