Clever-Excel-Forum

Normale Version: Fehler "Typen unverträglich"?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hallo zusammen,

hoffe Euch geht es gut! :)

Ich habe eine Frage, ich bekomme manchmal eine Fehlermeldung "Typen unverträglich", wenn ich zwei oder mehr Zellen in A8:A52 lösche:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("A8:A52")) Is Nothing Then

If Target.Offset(0, 2).FormulaR1C1 = "=IF(RC1="""","""",IF(OR(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)),ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE))),"""",VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)))" Then
Else
Target.Offset(0, 2).FormulaR1C1 = "=IF(RC1="""","""",IF(OR(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)),ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE))),"""",VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)))"
End If

If Target.Offset(0, 3).FormulaR1C1 = "=IF(OR(ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),RC1=""""),"""",IF(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),VLOOKUP(RC1,Materialdaten.xlsm!C1:C9,2,FALSE),VLOOKUP(RC[-3],'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)))" Then
Else
Target.Offset(0, 3).FormulaR1C1 = "=IF(OR(ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),RC1=""""),"""",IF(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),VLOOKUP(RC1,Materialdaten.xlsm!C1:C9,2,FALSE),VLOOKUP(RC[-3],'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)))"
End If

If Target.Offset(0, 4).FormulaR1C1 = "=IF(RC1="""","""",RC2*RC4)" Then
Else
Target.Offset(0, 4).FormulaR1C1 = "=IF(RC1="""","""",RC2*RC4)"
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Woran liegt das, ich habe das Gefühl das es immer nur beim ersten mal wenn ich die Datei öffne passiert, danach geht es ohne Probleme, wenn ich nur 1 Zelle lösche, dann geht es sowieso ohne Problem!?
Jemand eine Idee?

Vielen lieben Dank im Voraus
LG
Alexandra
Hallo,

ich nehme an dass dies passiert weil dein Offset aus deiner Range herausläuft.
Hallo, 

was meinst du damit genau und wie kann ich das beheben?

Danke
LG 
Alexandra
Hallo Alexandra,

vielleicht ist es so besser:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngT As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("A8:A52")) Is Nothing Then
For Each rngT In Target.Cells
If rngT.Offset(0, 2).FormulaR1C1 <> "=IF(RC1="""","""",IF(OR(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)),ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE))),"""",VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)))" Then
rngT.Offset(0, 2).FormulaR1C1 = "=IF(RC1="""","""",IF(OR(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)),ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE))),"""",VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)))"
End If

If rngT.Offset(0, 3).FormulaR1C1 <> "=IF(OR(ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),RC1=""""),"""",IF(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),VLOOKUP(RC1,Materialdaten.xlsm!C1:C9,2,FALSE),VLOOKUP(RC[-3],'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)))" Then
rngT.Offset(0, 3).FormulaR1C1 = "=IF(OR(ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),RC1=""""),"""",IF(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),VLOOKUP(RC1,Materialdaten.xlsm!C1:C9,2,FALSE),VLOOKUP(RC[-3],'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)))"
End If

If rngT.Offset(0, 4).FormulaR1C1 <> "=IF(RC1="""","""",RC2*RC4)" Then
rngT.Offset(0, 4).FormulaR1C1 = "=IF(RC1="""","""",RC2*RC4)"
End If
Next rngT
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Gruß Uwe
Hallo Alexandra,

weil dein Target aus mehr als einer Zelle besteht. Versuche es mal so

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rngZelle As Range
   Application.ScreenUpdating = False
   Application.EnableEvents = False
  
   If Not Application.Intersect(Target, Range("A8:A52")) Is Nothing Then
      For Each rngZelle In Target.Cells
         If rngZelle.Offset(0, 2).FormulaR1C1 = "=IF(RC1="""","""",IF(OR(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)),ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE))),"""",VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)))" Then
         Else
            rngZelle.Offset(0, 2).FormulaR1C1 = "=IF(RC1="""","""",IF(OR(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)),ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE))),"""",VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)))"
         End If
        
         If rngZelle.Offset(0, 3).FormulaR1C1 = "=IF(OR(ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),RC1=""""),"""",IF(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),VLOOKUP(RC1,Materialdaten.xlsm!C1:C9,2,FALSE),VLOOKUP(RC[-3],'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)))" Then
         Else
            rngZelle.Offset(0, 3).FormulaR1C1 = "=IF(OR(ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),RC1=""""),"""",IF(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)),VLOOKUP(RC1,Materialdaten.xlsm!C1:C9,2,FALSE),VLOOKUP(RC[-3],'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,7,FALSE)))"
         End If
        
         If rngZelle.Offset(0, 4).FormulaR1C1 = "=IF(RC1="""","""",RC2*RC4)" Then
         Else
            rngZelle.Offset(0, 4).FormulaR1C1 = "=IF(RC1="""","""",RC2*RC4)"
         End If
      Next rngZelle
   End If
   Application.EnableEvents = True
   Application.ScreenUpdating = True
End Sub
Hallo Uwe, Hallo Stefan,


da haben sich Eure Antworten überschnitten! :)

Ich habe den Code entsprechend angepasst und es funktioniert perfekt! :)

Vielen lieben Dank & ein schönes Wochenende!
LG
Alexandra
Hallo Uwe, Hallo Stefan,

jetzt bekomme ich doch wieder eine Fehlermeldung "Laufzeitfehler 1004 - Anwendungs oder Objektdefinitionsfehler" auch immer, wenn ich das erste mal die Datei aufmachen und den ersten Wert in Spalte A eintrage oder eine Zelle in Spalte A löschen will. Danach geht alles ohne Probleme!?
Habt Ihr eine Idee?

Code:
If rngT.Offset(0, 2).FormulaR1C1 <> "=IF(RC1="""","""",IF(OR(ISBLANK(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)),ISERROR(VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE))),"""",VLOOKUP(RC1,'C:\TEMP\[Materialdaten.xlsm]Materialdaten'!C1:C9,4,FALSE)))" Then


Danke
LG
Alexandra
Hallo Alexandra,

gibt es in deiner Datei noch einen Workbook_Open-Code, in dem es Eintragungen in der Tabelle gibt?
Hallo Stefan,

nein,  nur den geposteten Code!

Hast du eine Idee?

Danke & LG
Alexandra
Hallöchen,

was steht denn so alles sonst noch im angepassten Makro?
Seiten: 1 2 3 4