vba-anfänger braucht hilfe mit code:
19.04.2007 08:51:05
oxe
Ich habe hier jetzt mal versucht nen Code zu schreiben, aber der funktioniert nicht und ich habe zu wenig Ahnung von VBA um sagen zu können warum. Ich denke mal da ist schon an der Stelle wo er das Monatsblatt wählt (siehe Kommentare) ein Fehler, weil nichtmal das funktioniert... Aber so etwa vom Ablauf sollte es so aussehen denke ich. Ich mache aber noch eine Abfrage rein, ob der Eintrag in Spalte 65 schon auf "ja" steht, dann ist der Datensatz ja schon eingetragen.
Also, ich habe ein Datenblatt ("Daten") und zwölf Monatsblätter ("01_07" ... "12_07"). Beim Datenblatt kommen immer wieder ein paar Zeilen (Datensätze) dazu und diese (bzw. alle) sollen dann in die Monatsblätter einsortiert werden.
Das Datenblatt ist folgendermaßen aufgebaut:
Jede Zeile beschreibt eine Woche eines Users. Die Spalten geben dann an: Datum des Wochenstarts, Montag, aufgeteilt auf zwei Felder mit Ziffern für Tag und Monat; ein Feld mit der User-Nummer und dann jeweils zu Montag-Freitag die Stunden am Ort-A und am Ort-B (h:mm;h:mm;).
Die Monatsblätter sehen so aus:
Spalten C bis AG beschreiben die Tage, in A5,A9,A13,...,A45 stehen die User und jeweils in der gleichen Zeile Ort-A und in der Zeile darunter Ort-B. In die Zellen wo sich Tag und User/Ort treffen sollen halt die passenden Daten einsortiert werden.
Vielleicht kann sich das hier mal jemand ansehen und mir die Fehler zeigen, wäre sehr dankbar! ist halt mein erster VBA-Code, hab vorher nur einen fertigen bisschen abgewandelt...
Danke sehr!!!
Option Explicit
Sub Einsortieren()
'Sortiert Daten in Monatsblätter ein
If MsgBox("Daten einsortieren?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
On Error Resume Next 'Fehler übergehen wenn Probleme auftreten
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim daten As Boolean
daten = False 'Keine Daten vorhanden als Standard
Dim zeile As Long
zeile = 3 'Startzeile im Datenblatt
Dim spalte As Long
Dim monat As Integer
Dim tag As Integer
Dim stuttgart As Integer
Dim nwheim As Integer
Dim helper As Integer
Dim wksDaten As Worksheet
Set wksDaten = ThisWorkbook.Worksheets("Daten")
Dim wksMonat As Worksheet
If wksDaten.Cells(zeile, 1) "" Then 'Überprüfen ob Daten vorhanden
daten = True
End If
While daten = True
spalte = 48 'Startspalte im Datenblatt
monat = Month(wksDaten.Cells(zeile, 63)) 'Monat wählen
tag = 2 + Day(wksDaten.Cells(zeile, 64)) 'Tages-Spalte wählen
Set wksMonat = ThisWorkbook.Worksheets(Format(monat, "00") & "_07") 'Monatsblatt wählen
stuttgart = 4 + (wksDaten.Cells(zeile, 62)) * 4 'User-Zeile wählen
nwheim = 5 + (wksDaten.Cells(zeile, 62)) * 4 'User-Zeile wählen
helper = 0
While helper