Oobjektvariable oder with-blockvariable nicht fest
Marcel
Hallo,
ich bin langsam am verzweifeln.
ich habe ein Makro in meiner Tabelle welches ein Datenbereich (der jeweils in einer Zeile liegt) aus einem anderen Tabellenblatt, nach dem Abgleich des Datums kopiert.
Danach springt es eine Zeile weiter und führt die Prüfung erneut durch.
Das Makro wird in 2 Tabellenblättern verwendet (in jedem Tabellenbl. ist der Code hinterlegt) unterscheidet sich nur in dem "Bezug [Tabellenblatt FAW SY(1A) u. FAW SY(1B)]" der zu kopierenden Daten.
Mein Problem besteht aus zwei Teilen:
zum einen:
- es erscheint beim Ausführen des Markros in dem 2. Tabellenblatt die Fehlermeldung.
" objektvariable oder with-blockvariable nicht festgelegt"
aber nur in der 2. Tabellenblatt das 1. funktioniert soweit, obwohl sich der "code" nicht unterscheidet.
zum anderen:
- das Markro gleicht ein Datum ( in Spalte A) mit dem fortlaufenden Kalenderdaten in Zeile 5 ab und überträgt den Datenbereich (mehrere Zellen) ab der "übereinstimmenden" Zelle
Problem: das Datum in Spalte A wird aus einem weiteren Tabellenblatt übertragen, wenn sich dieses Datum ändert oder dazwischen ein neues eingetragen wird, werden Daten teilweise doppelt übertragen.
es müsste bei einer Veränderung in der ersten Spalte (A1 =1) der Datenbereich(B6:B bis B:ACN)
gelöscht werden und das Makro neu ausgeführt.
Ist das möglich?
ich bin über jede Hilfe sehr dankbar!
VBA Code:
Sub t2()
Dim lz, alz, az, alzr As Range
Dim ber1, ber2, SpaBu, test As String
Dim ilz, ilzr, i As Integer
With ThisWorkbook.Sheets("AP (1A)").Range("a7:a500") '.Range("a7:a500") Bereich der geprüft _
wird,
Set lz = .Find(what:="*", after:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
End With
ilz = lz.Row ' lz.Row ist die letzte Zeile
Set alz = Range("a6:a" & ilz)
Set alzr = Range("5:5")
For i = 1 To ilz - 7 ' -7 da die ersten 7 Zeilen auslassen werden sollen(die 1. Stelle des _
Arrays "alz" ist die 7 Zeile)
For ii = 2 To 767 ' 767 ist Spalte 'ACN' (Bereichsende manuell festgelegt)
If alz(i) = alzr(ii) Then
ber1 = Range(Cells(alz(i).Row - 2, 6), Cells(alz(i).Row - 2, 200)).Address
With ThisWorkbook.Sheets("FAW SY(1A)").Range(ber1)
Set lz = .Find(what:="*", after:=.Range("A1"), LookIn:=xlValues, lookat:= _
xlWhole, searchdirection:=xlPrevious)
End With
ber1 = Range("g" & lz.Row, lz.Address).Address
SpaBu = Mid(alzr(ii).Address, 2, InStr(2, alzr(ii).Address, "$") - 2)
ber2 = SpaBu & alz(i).Row & ":" & SpaBu & alz(i).Row
Sheets("FAW SY(1A)").Range(ber1).Copy
Sheets("AP (1A)").Range(ber2).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
Next ii
Next i
End Sub