Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Fehler "Typen unverträglich"?
#1
Hallo zusammen,

hoffe Euch geht es gut!Smile

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
Antwortento top
#2
Hallo,

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

Stoffo
Antwortento top
#3
Hallo, 

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

Danke
LG 
Alexandra
Antwortento 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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • cysu11
Antwortento 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 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
  • cysu11
Antwortento top
#6
Hallo Uwe, Hallo Stefan,


da haben sich Eure Antworten überschnitten!Smile

Ich habe den Code entsprechend angepasst und es funktioniert perfekt!Smile

Vielen lieben Dank & ein schönes Wochenende!
LG
Alexandra
Antwortento 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
Antwortento 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 2007
Antwortento top
#9
Hallo Stefan,

nein,  nur den geposteten Code!

Hast du eine Idee?

Danke & LG
Alexandra
Antwortento 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-2016)
Antwortento top


Gehe zu:


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