Hallo Gemeinde,
Ich führe eine Suche aus und kopiere mit einem Makro in mein Arbeitsblatt.
In diesem Arbeitsblatt habe ich ein Change Makro geschrieben, das mir aus einem anderen Sheet in der Mappe per SVerweis Daten einfügt.
Mache ich es per Hand, Funktioniert es einwandfrei.
Ändert das erste Makro die Zelle geht es in Störung.
Teil aus 1. Makro:
' QName =Quellbook, QSheet=QuellSheet, QZeile=QuellZeile, ZName=Zieldatei, ZSheet=Zielsheet, EZZeile= EinfügeZielZeile
Workbooks(QName.Name).Worksheets(QSheet.Name).Range("AJ" & QZeile).Copy ' QName =QuellDatei QSheet= QuellSheet QZeile= QuellZeile
' Workbooks(ZName).Worksheets(ZSheet).aktivate 'Wenn ich es Aktiviere kommt Laufzeitfehler 438 Objekt unterstützt Eigenschaft oder Methode nicht
' Workbooks(ZName).Worksheets(ZSheet).Range("F" & EZZeile).Select 'Gleiche Meldung
' Workbooks(ZName).Worksheets(ZSheet).Cells("F" & EZZeile).Select 'Laufzeitfehler 5 Ungültiger Prozeduraufruf oder Ungültiges Argument
Workbooks(ZName).Worksheets(ZSheet).Range("F" & EZZeile).PasteSpecial xlPasteValues
Mein Gedanke dabei war die Zelle vorher zu aktivieren. Kann auch falsch sein.
Das zweite Makro ist ein Worksheet Change in dem Sheet hinterlegt:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DP As Integer
On Error GoTo ErrorHandler
Line = Target.Row
' Target Column = die überwachte Spalte Numerisch gezählt F=6,G=7
If Target.Column = 6 Then ' Wert in Variable ist Spalte 6 ="F"
GoTo EQAuffüllen
Else: GoTo Ende
End If
'Auffüllen der Spalten aus Sheet Alle aktive EQs alle RBs
EQAuffüllen:
' Ausblenden der Funktion bei den ersten beiden Zeilen Row>2
If Target.Row > 2 Then 'Wert der Variablen ist Zeile 150
Line = Target.Row
GoTo Einfügen
Else: GoTo Ende
Einfügen:
Dim EQNR As String
Dim Herkunft As String
EQNR = "F"
Herkunft = "D"
Range(Herkunft & Line).Select 'Ab hier springt das Makro in den ERROR Handler und steigt aus.Wenn ich in die Variablen schaue passen die Werte und er sollte eigendlich die Zelle "D150" markieren und dort die Formel eintragen.
ActiveCell.Formula2Local = "=SVERWEIS(" & EQNR & Line & ";'Alle aktive EQs alle RBs'!A:P;16;FALSCH)"
If Range(Herkunft & Line).HasFormula = True Then 'Nach dem Ausfüllen der Zelle durch die Formel, soll nur der Wert übernommen werden.
Range(Herkunft & Line).Value = Range(Herkunft & Line).Value
End If
Mein Gedanke war, das ich die Zelle aus dem Makro heraus zuvor aktiviere. Evtl. könnte damit der Ablauffehler behoben sein.
Wenn ich das Makro aus der Mappe heraus starte, funktioniert es einwandfrei.
Danke
|