Hallo,
ich bin Vba Anfänger und versuche momentan ein Makro zu programmieren. Ich habe eine große Benzinpreisliste in Form einer Tabelle angelegt. Jeder Eintrag hat eine Eintragsnummer, ein Datum, natürlich den Preis, sowie die Tankstellenkette (wo ich getankt habe) und ein Feld für Bemerkungen. D.h. die Tabelle hat 5 Spalten. Ich habe jetzt für jede Tankstellenkette ein Tabellenblatt angelegt, welches den Namen einer Kette trägt (z.B. Aral, Jet,...) und in jedem eine Tabelle mit den selben 5 Spalten eingefügt. Nun möchte ich mir per Makro gern alles in diese Tabellen einsortieren lassen.
Ich weiß, dass es dafür auch Filter gibt, aber das war der ideale Einstieg in VBA Programmierung... dachte ich
Wenn das oben geschilderte Programm funktioniert, möchte ich dann die Tabellen so verknüpfen, dass eine Eingabe im ersten Tabellenblatt automatisch der Tankstelle zugeordnet wird.
Bis jetzt habe ich folgendes verfasst:
Sub Sortieren()
Dim objWks As Worksheet
Dim nLastRow As Long
Dim strMsg As String
Dim Zellinhalt_Kennzeichen As String
Dim Kennzeichen As String
Dim erstefreieZeile As Long
'die letzte eingegebene Zeile der Tabelle bestimmen
Set objWks = ActiveWorkbook.Worksheets(1)
With objWks
If Application.WorksheetFunction.CountA(.Cells) > 0 Then
On Error Resume Next
nLastRow = .Cells.Find(What:="*", After:=.Cells(1), _
LookIn:=xlFormulas, LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
If Err.Number = 0 Then
strMsg = "Letzte Zeile mit Daten: " & nLastRow
Else
strMsg = "Laufzeitfehler '" & CStr(Err.Number)
strMsg = strMsg & "':" & vbCr & Err.Description
End If
On Error GoTo 0
Else
strMsg = "Das Tabellenblatt enthält keine Daten!"
End If
End With
strMsg = "Tabellenblatt: " & objWks.Name & vbCr & vbCr & strMsg
'Festlegung der Variablen (Kennzeichen=Name der Tankstelle)
Zellinhalt_Kennzeichen = "H" & nLastRow
Kennzeichen = Range(Zellinhalt_Kennzeichen)
Select Case Kennzeichen
Case "Aral"
Case "Jet"
Case "Globus"
Case "Agip"
Debug.Print "geht"
Case "Shell"
'Tabellenblatt mit Abstimmern aktivieren
Sheets("Preisliste").Activate
'Auswahl der entsprechenden Zeile aus Preistabelle
With ActiveSheet.ListObjects("Tabelle27")
'4te Zeile auswählen (Überschrift zählt nicht mit)
.ListRows(4).Range.Select
End With
'Auswahl kopieren
Selection.Copy
'Tabellenblatt mit entsprechendem Kennzeichen aktivieren
Sheets(Kennzeichen).Activate
'erste freie Zeile der Tabelle auswählen
With ActiveSheet.ListObjects("Tabelle3")
.ListRows(1).Range.Select
End With
'einfügen
ActiveSheet.Paste
'einfügen einer Zeile oberhalb der ausgewählten
Selection.ListObject.ListRows.Add (11)
Case "Star"
Case "Total"
End Select
Set objWks = Nothing
End Sub
aber das funktioniert nicht so wie gedacht, oder besser gesagt iwie nur von Zeit zu Zeit. Kann mir hier eventuell jemand weiterhelfen? Ich habe keine Ahnung, wie ich die Zeilen in meiner Tabelle auf dem ersten Tabellenblatt kopieren und nach Datum sortiert in die Tabelle des passenden Tabellenblattes übertrage.
|