ODER klappt nicht / welche Zellenlänge hat #Wert#

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: ODER klappt nicht / welche Zellenlänge hat #Wert# von: Reinhard
Geschrieben am: 20.02.2005 17:49:33

Hallo Wissende,
bei der Beantwortung von https://www.herber.de/forum/messages/572310.html schrieb ich mir nachfolgende Tabelle.

Excelfrage:
Ich finde nicht heraus warum in E6 der Fehler #Wert!# erscheint. Wie ich aus E7 erahne, muss es an dem "Oder" liegen, hab da aber keinen Plan warum.

Vbafrage:
Weiterhin brach mein Code mit dem ich hier was poste (siehe Nachspann) wegen E6 ab, also an den Stellen wo der Code die Länge oder den Inhalt von E6 lesen soll.
Wie schreibe ich z.B.
msgbox len(Range("E6"))
msgbox Range("E6")
um, damit da kein Fehler auftritt?

Vielen Dank für alle Tipps, Lösungen...

Tabellenblattname: Tabelle1
   A |  B  | C | D |    E    |         F         | G | 
1|   |   G | 6 | 6 |       6 |                   |   | 
2|   |  GG | 7 | 7 |       7 |                   |   | 
3|   | GGG | 1 | 1 |       1 |                   | 5 | 
4|   |  BJ | 7 | 7 |       7 |                   |   | 
5|   |   R | 5 | 5 |       5 |                   |   | 
6|   |   e | 1 | 1 | #Wert!# | <--Wieso Fehler?  |   | 
7|   |   e | 1 | 1 |       1 |                   |   | 
Benutzte Formeln:
C1:  =WENN(WENN(B1="G";$G$3+1;WENN(B1="GG";$G$3+2;WENN(B1="BJ";$G$3+2;WENN(B1="GGG";$G$3+3;WENN(B1="R";$G$3;1)))))>7;1;WENN(B1="G";$G$3+1;WENN(B1="GG";$G$3+2;WENN(B1="BJ";$G$3+2;WENN(B1="GGG";$G$3+3;WENN(B1="R";$G$3;1))))))
C2:  =WENN(WENN(B2="G";$G$3+1;WENN(B2="GG";$G$3+2;WENN(B2="BJ";$G$3+2;WENN(B2="GGG";$G$3+3;WENN(B2="R";$G$3;1)))))>7;1;WENN(B2="G";$G$3+1;WENN(B2="GG";$G$3+2;WENN(B2="BJ";$G$3+2;WENN(B2="GGG";$G$3+3;WENN(B2="R";$G$3;1))))))
C3:  =WENN(WENN(B3="G";$G$3+1;WENN(B3="GG";$G$3+2;WENN(B3="BJ";$G$3+2;WENN(B3="GGG";$G$3+3;WENN(B3="R";$G$3;1)))))>7;1;WENN(B3="G";$G$3+1;WENN(B3="GG";$G$3+2;WENN(B3="BJ";$G$3+2;WENN(B3="GGG";$G$3+3;WENN(B3="R";$G$3;1))))))
C4:  =WENN(WENN(B4="G";$G$3+1;WENN(B4="GG";$G$3+2;WENN(B4="BJ";$G$3+2;WENN(B4="GGG";$G$3+3;WENN(B4="R";$G$3;1)))))>7;1;WENN(B4="G";$G$3+1;WENN(B4="GG";$G$3+2;WENN(B4="BJ";$G$3+2;WENN(B4="GGG";$G$3+3;WENN(B4="R";$G$3;1))))))
C5:  =WENN(WENN(B5="G";$G$3+1;WENN(B5="GG";$G$3+2;WENN(B5="BJ";$G$3+2;WENN(B5="GGG";$G$3+3;WENN(B5="R";$G$3;1)))))>7;1;WENN(B5="G";$G$3+1;WENN(B5="GG";$G$3+2;WENN(B5="BJ";$G$3+2;WENN(B5="GGG";$G$3+3;WENN(B5="R";$G$3;1))))))
C6:  =WENN(WENN(B6="G";$G$3+1;WENN(B6="GG";$G$3+2;WENN(B6="BJ";$G$3+2;WENN(B6="GGG";$G$3+3;WENN(B6="R";$G$3;1)))))>7;1;WENN(B6="G";$G$3+1;WENN(B6="GG";$G$3+2;WENN(B6="BJ";$G$3+2;WENN(B6="GGG";$G$3+3;WENN(B6="R";$G$3;1))))))
C7:  =WENN(WENN(B7="G";$G$3+1;WENN(B7="GG";$G$3+2;WENN(B7="BJ";$G$3+2;WENN(B7="GGG";$G$3+3;WENN(B7="R";$G$3;1)))))>7;1;WENN(B7="G";$G$3+1;WENN(B7="GG";$G$3+2;WENN(B7="BJ";$G$3+2;WENN(B7="GGG";$G$3+3;WENN(B7="R";$G$3;1))))))
D1:  =WENN(1+(B1="G")*$G$3+(B1="GG")*($G$3+1)+(B1="BJ")*($G$3+1)+(B1="GGG")*($G$3+2)+(B1="R")*($G$3-1)>7;1;1+(B1="G")*$G$3+(B1="GG")*($G$3+1)+(B1="BJ")*($G$3+1)+(B1="GGG")*($G$3+2)+(B1="R")*($G$3-1))
D2:  =WENN(1+(B2="G")*$G$3+(B2="GG")*($G$3+1)+(B2="BJ")*($G$3+1)+(B2="GGG")*($G$3+2)+(B2="R")*($G$3-1)>7;1;1+(B2="G")*$G$3+(B2="GG")*($G$3+1)+(B2="BJ")*($G$3+1)+(B2="GGG")*($G$3+2)+(B2="R")*($G$3-1))
D3:  =WENN(1+(B3="G")*$G$3+(B3="GG")*($G$3+1)+(B3="BJ")*($G$3+1)+(B3="GGG")*($G$3+2)+(B3="R")*($G$3-1)>7;1;1+(B3="G")*$G$3+(B3="GG")*($G$3+1)+(B3="BJ")*($G$3+1)+(B3="GGG")*($G$3+2)+(B3="R")*($G$3-1))
D4:  =WENN(1+(B4="G")*$G$3+(B4="GG")*($G$3+1)+(B4="BJ")*($G$3+1)+(B4="GGG")*($G$3+2)+(B4="R")*($G$3-1)>7;1;1+(B4="G")*$G$3+(B4="GG")*($G$3+1)+(B4="BJ")*($G$3+1)+(B4="GGG")*($G$3+2)+(B4="R")*($G$3-1))
D5:  =WENN(1+(B5="G")*$G$3+(B5="GG")*($G$3+1)+(B5="BJ")*($G$3+1)+(B5="GGG")*($G$3+2)+(B5="R")*($G$3-1)>7;1;1+(B5="G")*$G$3+(B5="GG")*($G$3+1)+(B5="BJ")*($G$3+1)+(B5="GGG")*($G$3+2)+(B5="R")*($G$3-1))
D6:  =WENN(1+(B6="G")*$G$3+(B6="GG")*($G$3+1)+(B6="BJ")*($G$3+1)+(B6="GGG")*($G$3+2)+(B6="R")*($G$3-1)>7;1;1+(B6="G")*$G$3+(B6="GG")*($G$3+1)+(B6="BJ")*($G$3+1)+(B6="GGG")*($G$3+2)+(B6="R")*($G$3-1))
D7:  =WENN(1+(B7="G")*$G$3+(B7="GG")*($G$3+1)+(B7="BJ")*($G$3+1)+(B7="GGG")*($G$3+2)+(B7="R")*($G$3-1)>7;1;1+(B7="G")*$G$3+(B7="GG")*($G$3+1)+(B7="BJ")*($G$3+1)+(B7="GGG")*($G$3+2)+(B7="R")*($G$3-1))
E1:  =WENN(ODER(ISTFEHLER(ausw);ausw>7);1;ausw)
E2:  =WENN(ODER(ISTFEHLER(ausw);ausw>7);1;ausw)
E3:  =WENN(ODER(ISTFEHLER(ausw);ausw>7);1;ausw)
E4:  =WENN(ODER(ISTFEHLER(ausw);ausw>7);1;ausw)
E5:  =WENN(ODER(ISTFEHLER(ausw);ausw>7);1;ausw)
E7:  =WENN(ISTFEHLER(ausw);1;ausw)
Namen in der Tabelle:
ausw:  =Tabelle1!$G$3+WAHL(FINDEN(INDIREKT("ZS(-3)";);"XXGXXGGXGGGBJXRXX")/3;1;2;3;2;0)
Gruß
Reinhard
Tabelle wurde eingefügt mit Code von https://www.herber.de/forum/technik/messages/1226.html 

Bild


Betrifft: Nachtrag: in E6 steht das Gleiche wie in E1,E2,. von: Reinhard
Geschrieben am: 20.02.2005 17:56:06

Hallo,
aber wegen der Problematik habe ich im Code kurzerhand
.range("E6")="'#Wert!#"
reingeschriebn.
In der Originaltabelle steht also auch in E6:
=WENN(ODER(ISTFEHLER(ausw);ausw>7);1;ausw)
Gruß
Reinhard


Bild


Betrifft: AW: ODER klappt nicht / welche Zellenlänge hat #Wert# von: Luschi
Geschrieben am: 20.02.2005 18:47:47

Hallo Reinhard,

die Formelkonstruktion =WENN(ODER(ISTFEHLER(ausw);ausw>7);1;ausw) sieht zwar logisch
aus, hat einen entscheidenden Schönheitsfehler. Excel wertet grundsätzlich alle Teile
der Formel aus.
Selbst wenn ISTFEHLER(ausw) ein True ergibt und damit dieser Teil der ODER-Bebedingung
erfüllt ist, wird der 2. Teil davon auch noch geprüft.
Da kommt dann Fehler>7 heraus
und wird von Excel als Fehlerwert erkannt.
neue Formel:
=WENN(ISTFEHLER(ausw);1;WENN(ausw>7;1;ausw))

Gruß von Luschi
aus klein-Paris


Bild


Betrifft: AW: ODER klappt nicht / welche Zellenlänge hat #Wert# von: Fred
Geschrieben am: 20.02.2005 18:52:09

Hi,

klär mich bitte mal auf, was klein-Paris ist.

Gruß Fred


Bild


Betrifft: OT Klaa paris von: Reinhard
Geschrieben am: 20.02.2005 18:59:25

Hi Fred,
hier in Frankfurt/M wird der Stadtteil Heddernheim so bezeichnet, grade zu Faschingszeiten geht da schwer der Bär ab.
Woher der Begriff kommt, k.A., vielleicht von früher als hier die Franzosen herrschten.
Falls Luschi das meint.
Gruß
Reinhard


Bild


Betrifft: welche Zellenlänge hat #Wert# von: Reinhard
Geschrieben am: 20.02.2005 20:20:59

Danke dir Luschi, habs jetzt verstanden.

Bliebe aber noch die Frage (in E6 steht #Wert!):
Weiterhin brach mein Code mit dem ich hier was poste (siehe Nachspann) wegen E6 ab, also an den Stellen wo der Code die Länge oder den Inhalt von E6 lesen soll.
Wie schreibe ich z.B.
msgbox len(Range("E6"))
msgbox Range("E6")
um, damit da kein Fehler auftritt?

Ich probiere jetzt mit CVerr herum,
aber auch mit sowas:

Sub tt()
Range("A1").Formula = "=B1/0"
Range("A7").Formula = "=B1/0"
Set Fehlerzellen = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
For n = 1 To 10
If Application.Intersect(Range("A" & n), Fehlerzellen.Address) Then MsgBox n
Next n
End Sub


aber klappt noch nix.
Lieb wäre mir aber auch die VBA-Übersetzung von http://www.excelformeln.de/formeln.html?welcher=355 :
A1 ist die zu berechnende Zelle.
Vergebe den Namen
ZellAnsicht
bezogen auf:=ZELLE.ZUORDNEN(53;INDIREKT("A1";WAHR))

Mittels =ZellAnsicht. erhält man dann "#Div/0!#" als String (wenn in A1 dieser Fehler ist


Naja, mal hoffen das noch Meldungen kommen :-)
Gruß
Reinhard


Bild


Betrifft: workaround von: Reinhard
Geschrieben am: 22.02.2005 23:58:28


Hallo Interessierte,
im folgenden Codeteil, das die größte Breite pro Spalte ermittelet und dies der  
Variablen Breite(x) zuweist:
For s = 1 To anzS 'Schleife um pro Spalte die jeweilig höchste Breite zu ermitteln
    Breite(s) = 0
    For z = 1 To anzZ
        If Len(.Cells(z, s).Value) > Breite(s) Then Breite(s) = Len(.Cells(z, s).Value)
    Next z
Next s 
kam ein VBA-Fehler durch .Cells(z,s).Value wenn in der Zelle kein Wert sondern ein 
ExcelFehler wie z.B. #WERT!# stand. Len(.Cells(z,s).Value) ergab ebenfalls einen 
VBA-Fehler, den habe ich analog zu hier umgangen.
Ich habe das jetzt wie nachfolgend gelöst würde aber auch gern andere, bessere Vorschläge
zur Lösung hören:
varErrConst = Array(xlErrDiv0, xlErrNA, xlErrName, xlErrNull, _
                  xlErrNum, xlErrRef, xlErrValue)
varErrLetter = Array("#DIV/0!", "#NV", "#NAME?", "#NULL!", _
                        "#ZAHL!", "#BEZUG!", "#WERT!")
'...
'...
For s = 1 To anzS
    If Not IsError(.Cells(z, s).Value) Then
        ZeilenSatz(z) = ZeilenSatz(z) & Right(String(Breite(s), " ") & .Cells(z, s).Value, Breite(s)) & " | "
    Else
        For n = 0 To 6
            If .Cells(z, s).Value = CVErr(varErrConst(n)) Then
             ZeilenSatz(z) = ZeilenSatz(z) & Right(String(Breite(s), " ") & varErrLetter(n), Breite(s)) & " | "
            If Len(varErrLetter(n)) > Breite(s) Then Breite(s) = Len(varErrLetter(n))
                End If
        Next n
    End If
Next s

Gruß
Reinhard


Bild


Betrifft: selbstgefunden *freu* von: Reinhard
Geschrieben am: 23.02.2005 00:56:58

Hallo Interessierte,
bei Fehlermeldungen in einer Zelle ergibt Value einen vba-Fehler, aber Text nicht.


Sub tt()
Range("A1").Formula = "=B1/0"
MsgBox [a1].Value ' Fehler 13 Typen passen nicht
MsgBox [a1].Text ' Ok
MsgBox Len([a1].Value) ' Fehler 13 Typen passen nicht
MsgBox Len([a1].Text) 'Ok
End Sub


An sich logisch,aber das weiss ich erst ab jetzt, kommt auch daher dass ich "Text" an sich nie benutzt habe.
Egal, wieder was gelernt :-)
Gruß
Reinhard


 Bild

Beiträge aus den Excel-Beispielen zum Thema "ODER klappt nicht / welche Zellenlänge hat #Wert#"