Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler 2042

Fehler 2042
20.11.2021 14:15:17
Michael
Hallo zusammen,
ich habe dieses Makro:
Set Bereich = Worksheets("Modelle").Range("L5:R10") 'Matrix
Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K5:K10,1)")
Spalte = Evaluate("=MATCH(Auftragsbestätigung!E28,Modelle!L4:R4,1)")
'Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K5:K10,1)")
'Spalte = Evaluate("=MATCH(AuftragsbestätigungE28,Modelle!L4:R4,1)")
If Worksheets("Auftragsbestätigung").Range("E27") = "A" Or _
Worksheets("Auftragsbestätigung").Range("E27") = "A links absteigend" _
Or Worksheets("Auftragsbestätigung").Range("E27") = "A-S links absteigend" _
Or Worksheets("Auftragsbestätigung").Range("E27") = "A-S-H links absteigend" Then
Select Case Bereich.Cells(Zeile, Spalte).Interior.Color
bleibt hier stehen und Zeile wird 2042 angezeigt.
Was kann es sein, ich hatte die Matrix verkleinert, die Daten stehen in L5:R10
Spaltenüberschrift von L4:R4
Zeilenüberschrift: K5:K10
Case 16777215: Ausgabe = "A links absteigend" 'weiß
Case 49407: Ausgabe = "A-S links absteigend" 'Gelb
Case 5296274: Ausgabe = "A-S-H links absteigend" 'Grün
End Select
Worksheets("Auftragsbestätigung").Range("E27") = Ausgabe
End If
mfg michael
Anzeige

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler 2042
20.11.2021 14:30:13
Nepumuk
Hallo Michael,
lade bitte eine Mustermappe hoch in welcher der Fehler auftritt, ich kann das nämlich nicht nachvollziehen.
Gruß
Nepumuk
AW: Fehler 2042
20.11.2021 15:14:25
Nepumuk
Hallo Michael,
ich habe den Fehler gefunden. Wenn Match nichts finden dann befindet sich ein Fehlerwert in der Variablen. Das kannst du so abfangen:

Dim Zeile As Variant, Spalte As Variant
Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K5:K10,1)")
Spalte = Evaluate("=MATCH(Auftragsbestätigung!E28,Modelle!L4:R4,1)")
If IsError(Zeile) Or IsError(Spalte) Then
MsgBox "Zeile oder Spalte nicht gefunden", vbCritical, "Programmabbruch"
Exit Sub
End If
Gruß
Nepumuk
Anzeige
Habe so eingesetzt aber ...
20.11.2021 20:15:43
Walter
Hallo Nepumuk,
habe mal so eingesetzt aber ohne Erfolg:
Dim Bereich, Bereich2 As Range
Dim Zeile2 As Long, Spalte2 As Long
Dim Ausgabe As String
Sheets("Auftragsbestätigung").Select
ActiveSheet.Unprotect (getStrPasswort)
ActiveSheet.Application.ScreenUpdating = False
Application.EnableEvents = True
Dim SHP As Shape
For Each SHP In ActiveSheet.Shapes
Select Case SHP.name
Case "A", "A-S", "A-S-H", "B", "B-S", "B-S-H", "C", "C-S", "C-S-H": SHP.Delete
End Select
Next SHP
Dim Zeile As Variant, Spalte As Variant
Set Bereich = Worksheets("Modelle").Range("L5:R10") 'Matrix
If IsError(Zeile) Or IsError(Spalte) Then
MsgBox "Zeile oder Spalte nicht gefunden", vbCritical, "Programmabbruch"
Exit Sub
Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K5:K10,1)")
Spalte = Evaluate("=MATCH(AuftragsbestätigungE28,Modelle!L4:R4,1)")
If Worksheets("Auftragsbestätigung").Range("E27") = "A" Or _
Worksheets("Auftragsbestätigung").Range("E27") = "A links absteigend" _
Or Worksheets("Auftragsbestätigung").Range("E27") = "A-S links absteigend" _
Or Worksheets("Auftragsbestätigung").Range("E27") = "A-S-H links absteigend" Then
Select Case Bereich.Cells(Zeile, Spalte).Interior.Color
Case 16777215: Ausgabe = "A links absteigend" 'weiß
Case 49407: Ausgabe = "A-S links absteigend" 'Gelb
Case 5296274: Ausgabe = "A-S-H links absteigend" 'Grün
End Select
Worksheets("Auftragsbestätigung").Range("E27") = Ausgabe
End If
End If
leider kein Erfolg
mfg michael
Anzeige
AW: Habe so eingesetzt aber ...
20.11.2021 21:04:31
Nepumuk
Hallo Michael,
die Prüfung muss nach der Match-Funktion erfolgen, nicht davor. Das ist doch aus meinem Beispiel ersichtlich, oder?
Gruß
Nepumuk
AW: Habe so eingesetzt aber ...
20.11.2021 21:08:08
Michael
Hallo Nepumuk,
Sorry habe nicht aufgepasst, der Name vom Vater „Walter“ war noch drin.
Mit freundlichen Grüßen
Michael
Anzeige
AW: Habe so eingesetzt aber ...
20.11.2021 21:08:19
Michael
Hallo Nepumuk,
Sorry habe nicht aufgepasst, der Name vom Vater „Walter“ war noch drin.
Mit freundlichen Grüßen
Michael
AW: Habe so eingesetzt aber ...
21.11.2021 08:12:56
Hajo_Zi
Hallo Michael,
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Ich konnte dies im Beitrag nicht lesen!
Das ist nur meine Meinung zu dem Thema.
GrußformelHomepage
Anzeige
Guten Morgen Hajo, habe ja noch keine Lösung !!!
21.11.2021 11:00:30
Walter
Guten Morgen Hajo, habe ja noch keine Lösung !!!
21.11.2021 11:00:46
Michael
AW: Guten Morgen Hajo, habe ja noch keine Lösung !!!
21.11.2021 11:25:24
Nepumuk
Hallo Michael,
was ist daran so schwierig?

Dim Zeile As Variant, Spalte As Variant
Dim Ausgabe As String
Dim Bereich As Range
Sheets("Auftragsbestätigung").Select
ActiveSheet.Unprotect getStrPasswort
Application.ScreenUpdating = False
Application.EnableEvents = True
Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K5:K10,1)")
Spalte = Evaluate("=MATCH(AuftragsbestätigungE28,Modelle!L4:R4,1)")
If IsError(Zeile) Or IsError(Spalte) Then
MsgBox "Zeile oder Spalte nicht gefunden", vbCritical, "Programmabbruch"
Exit Sub
End If
Set Bereich = Worksheets("Modelle").Range("L5:R10") 'Matrix
If Worksheets("Auftragsbestätigung").Range("E27") = "A" Or _
Worksheets("Auftragsbestätigung").Range("E27") = "A links absteigend" _
Or Worksheets("Auftragsbestätigung").Range("E27") = "A-S links absteigend" _
Or Worksheets("Auftragsbestätigung").Range("E27") = "A-S-H links absteigend" Then
Select Case Bereich.Cells(Zeile, Spalte).Interior.Color
Case 16777215: Ausgabe = "A links absteigend" 'weiß
Case 49407: Ausgabe = "A-S links absteigend" 'Gelb
Case 5296274: Ausgabe = "A-S-H links absteigend" 'Grün
End Select
Worksheets("Auftragsbestätigung").Range("E27") = Ausgabe
End If
Gruß
Nepumuk
Anzeige
Danke Nepumuk -)
21.11.2021 16:56:01
Michael
Hallo Nepumuk,
habe so reingesetzt.
Es läuft alles.
Danke.
gruß michael
Nepumuk, leider der selber Fehler
21.11.2021 18:50:22
Michael
Hallo Nepumuk,
leider wird der gleiche Fehler Produziert.
Ich erstelle mal eine Musterdatei !!!
Wenn Du noch LUST hast ?
mfg
Michael
AW: Nepumuk, leider der selber Fehler
21.11.2021 19:11:51
Nepumuk
Hallo Michael,
ja, mach mal.
Gruß
Nepumuk
Anzeige
AW: Nepumuk, leider der selber Fehler
21.11.2021 19:35:14
Michael
Hallo Nepumuk,
anbei die Datei.
Per AuswahlBox bitte A,B oder C auswählen.
Danach wird das entsprechende Muster geladen.
In der Matrix befinden sich die Werte (€) und dazugehörigen weiteren Muster.
Je nachdem, wenn sich der gefundene Wert im weißen, gelben oder grünen Feld befindet,
wird das entsprechende Muster geladen. (siehe Sheet Modelle)
Ich drücke mal die Daumen.
https://www.herber.de/bbs/user/149286.xlsm
mfg Michael
Anzeige
AW: Nepumuk, leider der selber Fehler
21.11.2021 19:40:15
Nepumuk
Hallo Michael,
und das VBA-Kennwort ist?
Gruß
Nepumuk
Anbei…
21.11.2021 20:09:11
Michael
Hallo Nepumuk,
wwpa
Gruß Michael
AW: Anbei…
22.11.2021 10:19:02
Nepumuk
Hallo Michael,
ok, ich wähle in der ComboBox etwas aus und dann? Was muss ich machen um den Fehler auszulösen?
Gruß
Nepumuk
Anzeige
AW: Anbei…
22.11.2021 10:48:18
Michael
Guten Morgen Nepumuk,
mal wählt mit der ComboBox den Buchstaben aus, für das entsprechende Element.
Es erscheint das entsprechende Element und die Info kommt:
Bitte wählen Sie die Breite und Höhe aus.
Bei der Eingabe der der Breite wird die Fehlermeldung schon ausgelöst !
Anbei die angepasste Datei ohne Passwort.
https://www.herber.de/bbs/user/149292.xlsm
Danke nochmals im Voraus !
mfg Michael
Anzeige
Ergänzend die Formel für Zelle...
22.11.2021 11:05:13
Michael
Hallo Nepumuk,
ergänzend hab ich die Formel für die Zelle "H27" mal korrigiert.
=WENN(E28="";"";WENN(ODER(E27="C";E27="C-S";E27="C-S-H");M27;INDEX(Modelle!$L$5:$R$10;VERGLEICH(E29; Modelle!$K$4:$K$10;1);VERGLEICH(E28;Modelle!$K$4:$R$4;1))))
dies ergibt die RICHTIGE Auswahl aus der Matrix.
mfg Michael
Anzeige
AW: Ergänzend die Formel für Zelle...
22.11.2021 11:41:30
Nepumuk
Hallo Michael,
jetzt weiß ich noch immer nicht wie ich den Fehler auslöse. Und wenn, welchen in welchem Makro in welcher Zeile.
Gruß
Nepumuk
AW: Ergänzend die Formel für Zelle...
22.11.2021 12:38:30
Michael
Hallo Nepumuk,
sobald Du in der Zelle E28 eine Zahl eingibst, z.B. 2501, dann kommt
deine InfoBox Zeile oder Spalte nicht gefunden !
Dann einfach auf "Debuggen" gehen.
mfg michael
Anzeige
AW: Ergänzend die Formel für Zelle...
22.11.2021 12:55:31
Nepumuk
Hallo Michael,
1. Das Exit Sub musst du natürlich drin lassen, ansonsten läufst du ja in den Fehler.
2. Musst du nach jeder Match-Funktion prüfen ob der zugewiesene Wert einen Fehler enthält.
Ich hab das mal eingebaut: https://www.herber.de/bbs/user/149296.xlsm
Gruß
Nepumuk
Anzeige
Danke aber...
22.11.2021 13:16:32
Michael
Hallo Nepumuk,
nach der Info über Fehler, wird leider das Muster-Element gelöscht.
mfg michael
AW: Danke aber...
22.11.2021 13:21:53
Nepumuk
Hallo Michael,
dann musst du deinen Code so ändern, dass du keinen Fehler produzierst.
Gruß
Nepumuk
Schade...
22.11.2021 13:33:53
Michael
Hallo Nepumuk,
aber das war doch das Problem !
Na ja muss halt mal schauen.
mfg michael
Anzeige
Habe es geschafft ! aber noch Matrix
22.11.2021 14:08:05
Michael
Hallo Nepupuk,
dank deiner Fehlermeldung, habe ich die Lösung gefunden.
In der Matrix muss in Zelle K4 unbedingt eine 0 eingetragen werden und im Makro
so eingesetzt werden:
Set Bereich = Worksheets("Modelle").Range("L5:R10")
Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K4:K10,1)")
Spalte = Evaluate("=MATCH(Auftragsbestätigung!E28,Modelle!L4:R4,1)")
Leider stimmt aber nicht die Matrix Auswertung in Zelle H27
Wenn man die Breite in Zelle E28 mit 2510
und in E29 1500 eingibt, sollte 546,00 drin stehen aber es steht: 506,00 drin.
Der Wert in Zelle E28 ist 2510 also soll der Wert 3000 genommen werden.
Das ist Falsch, die Werte beziehen sich immer bis als bis 1500 ist also einschließlich 1500
oder
VIELLEICHT hast Du ein Lösung ?
mfg michael
Anzeige
AW:Danke Nepumuk --))
22.11.2021 14:34:10
Michael
Hallo Nepumuk,
danke für alles.
Ich habe mal für die Matrix einen neuen Beitrag angelegt.
Schönen Montag noch,
gruß michael
;
Anzeige
Anzeige

Infobox / Tutorial

Fehler 2042 in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Excel Fehler 2042 zu beheben, folge diesen Schritten:

  1. Variablen deklarieren: Stelle sicher, dass die Variablen für Zeile und Spalte als Variant deklariert sind.

    Dim Zeile As Variant, Spalte As Variant
  2. MATCH-Funktion verwenden: Setze die MATCH-Funktion ein, um die Zeile und Spalte zu bestimmen. Achte darauf, dass du die richtige Syntax verwendest.

    Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K5:K10,1)")
    Spalte = Evaluate("=MATCH(Auftragsbestätigung!E28,Modelle!L4:R4,1)")
  3. Fehler abfangen: Überprüfe, ob die Variablen Zeile oder Spalte einen Fehlerwert enthalten.

    If IsError(Zeile) Or IsError(Spalte) Then
       MsgBox "Zeile oder Spalte nicht gefunden", vbCritical, "Programmabbruch"
       Exit Sub
    End If
  4. Matrix und Bedingungen: Arbeite mit der Matrix, um die gewünschten Werte zu ermitteln, und setze die entsprechenden Bedingungen für die Ausgabe.

    Set Bereich = Worksheets("Modelle").Range("L5:R10")
    Select Case Bereich.Cells(Zeile, Spalte).Interior.Color
       Case 16777215: Ausgabe = "A links absteigend"
       Case 49407: Ausgabe = "A-S links absteigend"
       Case 5296274: Ausgabe = "A-S-H links absteigend"
    End Select

Häufige Fehler und Lösungen

  • Fehler 2042: Tritt auf, wenn die MATCH-Funktion keinen Wert findet. Verwende die IsError-Funktion, um dies abzufangen.
  • Falsche Zellreferenzen: Stelle sicher, dass die Zellreferenzen korrekt sind und auf die richtigen Bereiche zeigen.
  • Anwendungsfehler: Überprüfe, ob die Blätter korrekt benannt sind und ob die Daten vorhanden sind.

Alternative Methoden

  • Nutze die INDEX-Funktion zusammen mit MATCH, um flexibler zu sein:

    Dim Ergebnis As Variant
    Ergebnis = Application.WorksheetFunction.Index(Modelle.Range("L5:R10"), Application.WorksheetFunction.Match(Auftragsbestätigung.Range("E29"), Modelle.Range("K5:K10"), 1), Application.WorksheetFunction.Match(Auftragsbestätigung.Range("E28"), Modelle.Range("L4:R4"), 1))
  • Implementiere Error Handling in VBA, um Fehler automatisch zu protokollieren und zu behandeln:

    On Error GoTo Fehlerbehandlung
    'Code hier
    Exit Sub
    Fehlerbehandlung:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

Praktische Beispiele

Hier ist ein Beispiel, wie du die oben genannten Schritte umsetzen kannst:

Sub Fehler2042Beheben()
    Dim Zeile As Variant, Spalte As Variant
    Dim Bereich As Range
    Set Bereich = Worksheets("Modelle").Range("L5:R10")

    Zeile = Evaluate("=MATCH(Auftragsbestätigung!E29,Modelle!K5:K10,1)")
    Spalte = Evaluate("=MATCH(Auftragsbestätigung!E28,Modelle!L4:R4,1)")

    If IsError(Zeile) Or IsError(Spalte) Then
        MsgBox "Zeile oder Spalte nicht gefunden", vbCritical, "Programmabbruch"
        Exit Sub
    End If

    ' Hier kommt die Logik zur Farbauswertung
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Halte Deine Makros so modular wie möglich. Teile komplexe Logik in kleinere Funktionen auf.
  • Teste Deine Makros mit verschiedenen Datensätzen, um sicherzustellen, dass sie robust sind.

FAQ: Häufige Fragen

1. Was bedeutet Fehler 2042 in Excel VBA? Fehler 2042 tritt auf, wenn eine Formel oder Funktion keinen Wert zurückgibt, typischerweise bei der Verwendung von MATCH.

2. Wie kann ich Fehler 2042 vermeiden? Verwende die IsError-Funktion, um sicherzustellen, dass die Werte der Variablen gültig sind, bevor du sie weiterverwendest.

3. Was kann ich tun, wenn ich den Fehler immer noch bekomme? Überprüfe die Zellreferenzen und stelle sicher, dass die Daten vorhanden und korrekt formatiert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige