Fehler "Typen unverträglich"?
#1
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
Top
#2
Hallo,

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

Stoffo
Top
#3
Hallo, 

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

Danke
LG 
Alexandra
Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • cysu11
Top
#5
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
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • cysu11
Top
#6
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
Top
#7
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
Top
#8
Hallo Alexandra,

gibt es in deiner Datei noch einen Workbook_Open-Code, in dem es Eintragungen in der Tabelle gibt?
Gruß Stefan
Win 10 / Office 2016
Top
#9
Hallo Stefan,

nein,  nur den geposteten Code!

Hast du eine Idee?

Danke & LG
Alexandra
Top
#10
Hallöchen,

was steht denn so alles sonst noch im angepassten Makro?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste