Code einbinden
16.10.2007 15:25:00
Tommi
Franz hat mir heute den folgenden Code gebastelt. Beim Einbinden in die Excel-Datei bin ich leider auf ein altes Problem von mir gestoßen: Wie kann ich den Code so einbinden, dass er automatisch im Hintergrund ausgeführt wird? Bislang habe ich immer auslösende Ereignisse, z.B. einen Button, benutzt. In diesem Fall muss es aber leider automatisch vonstatten gehen. Ist so etwas möglich? Hier noch einmal der Code.
Herzlichen Dank und schöne Grüße
Tommi
Sub Von1nach2()
'Überträgt die sichtbaren Datenzeilen von Blatt 1 nach Blatt 2 _
wobei keine doppelten Einträge in den Spalten übertragen werden
Dim wksQ As Worksheet, wksZ As Worksheet
Dim Zeile1 As Long, Spalte As Integer
Dim arrZeiSpa2(1 To 3, 1 To 2) As Integer
Set wksQ = Worksheets("Quelle")
Set wksZ = Worksheets("Ziel")
With wksZ
'Startzeile für Einträge im Zielblatt
Zeile2Start = 2
arrZeiSpa2(1, 1) = Zeile2Start 'Stadt
arrZeiSpa2(2, 1) = Zeile2Start 'Name
arrZeiSpa2(3, 1) = Zeile2Start 'deutsch/englisch
'Spalten für die Einträge im Blatt 2
arrZeiSpa2(1, 2) = 2 'Stadt
arrZeiSpa2(2, 2) = 3 'Name
arrZeiSpa2(3, 2) = 4 'deutsch/englisch
'vorhandene Daten löschen
.Range(.Cells(Zeile2Start, arrZeiSpa2(1, 2)), _
.Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row, arrZeiSpa2(3, 2))).ClearContents
For Zeile1 = 2 To wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row
If wksQ.Rows(Zeile1).Hidden = False Then
'Einträge in Quellzeile abarbeiten
For Spalte = 1 To 3
'Prüfung ob Eintrag schon vorhanden
If Application.WorksheetFunction.CountIf(.Range(.Cells(Zeile2Start, _
arrZeiSpa2(Spalte, 2)), .Cells(arrZeiSpa2(Spalte, 1), arrZeiSpa2(Spalte, 2))), _
wksQ.Cells(Zeile1, Spalte).Value) = 0 Then
'Wert eintragen
.Cells(arrZeiSpa2(Spalte, 1), arrZeiSpa2(Spalte, 2)).Value = _
wksQ.Cells(Zeile1, Spalte).Value
'Zeilenzähler für Spalte in Zieltabelle erhöhen
arrZeiSpa2(Spalte, 1) = arrZeiSpa2(Spalte, 1) + 1
End If
Next
End If
Next
End With
End Sub