Anzeige
Archiv - Navigation
476to480
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
476to480
476to480
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array erstellen?

Array erstellen?
31.08.2004 17:28:07
Ryu_Hoshi
Hallo ich bins schon wieder.
Ich mache grade einen macro für den Knopf und wenn man diesen betätigt, dann
Sollte für jeden Monat des vergangenen Jahres ein neues Blatt ans Ende der Tabelle hinzugefügt und nach dem jeweiligen Monat benannt werden. Anschliessend sollten alle Spalten aus Worksheet "excel" die in Spalte "I" als Datum letzes Jahr und den jeweiligen Monat haben in den entsprechenden Monats worksheet kopiert werden. Z.B. Wenn in der Tabelle "excel" einträge mit Datum vom 05.01.03-29.01.03sind, sollten diese in extra dafür angelegtes Worksheet ("Januar") kopiert werden. Ich habe selber schon vorliegendes geschrieben
[code]
Dim wksE As Excel.Worksheet
Dim i As Long
Dim a As Long
Dim dtJahr As Integer
Dim dtMonat As Long
Dim r As Byte
Dim c As Byte
Application.ScreenUpdating = False
Set wksE = ThisWorkbook.Worksheets("excel")
dtJahr = Format(Now, "yyyy") - 1
dtMonat = 0

For a = 1 To 12
dtMonat = dtMonat + 1

Select Case dtMonat
Case "1"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "Januar"
Case "2"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "Februar"
Case "3"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "März"
Case "4"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "April"
Case "5"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "Mai"
Case "6"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "Juni"
Case "7"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "Juli"
Case "8"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "August"
Case "9"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "September"
Case "10"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "Oktober"
Case "11"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "November"
Case "12"
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = "Dezember"
End Select

With wksE
For i = .Cells(Rows.Count, 9).End(xlUp).Row To 2 Step -1
If Month(.Cells(i, 9)) dtMonat Or Year(wksE.Cells(i, 9)) dtJahr Then
'.Rows(i).Delete
r = Worksheets("Januar").UsedRange.Row
Worksheets("excel").UsedRange.Copy Destination:=Worksheets("Januar").Cells(r, 9)

End If
Next i
End With
Set wksE = Nothing
Next a
Application.ScreenUpdating = True
[/code]
Weiss noch nicht ob alles stimmt. Diese Selct Case Schleife hatte ich nie probiert. Ich weiss nicht wie ich das mit kopieren sollte das immer die Zeile von excel zum aktuellen Monatssheet kopiert werden. Sollte ich da einen Array machen und zu diesem alle Monate hinzufügen und dann wenn dieser z.B. AMonat heisst:
r = Worksheets("AMonat.Value(a)").UsedRange.Row
Worksheets("excel").UsedRange.Copy Destination:=Worksheets("AMonat.Value(a)").").Cells(r, 9)
Oder wie würde ihr das machen? Seht ihr ansonsten noch irgendwelche Fehler?

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Tipp #1
31.08.2004 20:29:18
Nepumuk
Hallo,
zum erstellen der Tabellen werden genau zwei Zeilen benötig:


For a = 1 To 12
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = MonthName(a)
Next 


Den Rest der Schleife habe ich mal weg gelassen, da werde ich aus deiner Erläuterung nicht schlau, und ohne die Mappe ist es schwierig nachzuvollziehen.
Gruß
Nepumuk
Anzeige
AW: Tipp #1
Ryu_Hoshi
Hallo Nepumuk! DAnke für deine HIlfe ich hab das ganze etwas verändert, aber doch ähnlich gemacht. Ich weiss bloss nicht wie ich es schreiben soll, dass die Zeilen mit Datum vom jeweiligen Monat in den sheet mit entsprechenden Monat kopiert wird. Der Code sieht so aus:
Dim wksE As Excel.Worksheet
Dim i As Long
Dim a As Long
Dim dtJahr As Integer
Dim dtMonat As Long
Dim r As Byte
Dim c As Byte
Application.ScreenUpdating = False
Set wksE = ThisWorkbook.Worksheets("excel")
dtJahr = Format(Now, "yyyy") - 1
dtMonat = 0
Dim m(11) As String
m(0) = "Januar"
m(1) = "Februar"
m(2) = "März"
m(3) = "April"
m(4) = "Mai"
m(5) = "Juni"
m(6) = "Juli"
m(7) = "August"
m(8) = "September"
m(9) = "Oktober"
m(10) = "November"
m(11) = "Dezember"
Dim j As Integer
For j = 0 To UBound(m())
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = m(j)
Next
With wksE
For i = .Cells(Rows.Count, 9).End(xlUp).Row To 2 Step -1
If Month(.Cells(i, 9)) dtMonat Or Year(wksE.Cells(i, 9)) dtJahr Then
r = Worksheets("excel").UsedRange.Row
c = Worksheets("excel").UsedRange.Column
Worksheets("excel").UsedRange.Copy Destination:=Worksheets("?").Cells(r, c)
End If
Next i
End With
Set wksE = Nothing
Application.ScreenUpdating = True
Man sieht an den Fragezeichen wo mir was unklar ist :)
Gruss Ryu_Hoshi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige