Daten einlesen in Userbox und #NV-Fehler

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

Betrifft: Daten einlesen in Userbox und #NV-Fehler von: Heinz
Geschrieben am: 23.02.2005 09:55:43

Hallo Forum,

ich habe folgende Probleme:

Ich benutze 2 Tabellenblätter mit Daten. In diese werden mittels Userboxen Daten eingetragen bzw. ausgelesen.
Auf dem zweiten Tabellenblatt hole ich per Sverweis Daten aus dem ersten Tabellenblatt.
1: #NV => Wenn nun der gesuchte Begriff auf dem Tabellenblatt 1 noch nicht enthalten ist kommt als Fehler #NV.

Daraus resultierend bekomme ich die folgende Fehlermeldung bei meiner Userboxabfrage: Laufzeitfehler Eigenschaft Value konnte nicht gesetzt werden. Typenkonflikt.
Ohne den #NV Fehler funzt die Userbox einwandfrei. Die Sverweisabfrage sieht folgendermaßen aus:
=WENN($E4="";"";WENN(SVERWEIS($E4;Komplett!$D$4:$P$4258;7)="";"";SVERWEIS($E4;Komplett!$D$4:$P$4258;7)))
Frage: wie kann ich den Fehler innerhalb der Sverweisabfrage unterbinden?

2: In meinen Userboxen werden die o.g. Tabellenblätter abgefragt. Nun werden in der Userbox innerhalb einer Combobox Daten eingelesen. Wird ein Datensatz ausgewählt erhalte ich in den dazugehörigen Textboxen die zugehörigen Daten angezeigt. Gleichzeitig brauche ich einen Vergleich zweier Daten. Es handel sich hierbei um einen Minimalstand und den aktuellen Bestand. Wird der Minimalstand unterschritten wird der Textfeldhintergrund rot. Da funzt auch weitestgehend, aber nicht bei allen Zahlen. Realisiert habe ich das folgendermaßen:

Private Sub ComboBox3_Change()
TextBox3 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 2)  ' Artikel
TextBox4 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 5)  ' Hersteller
TextBox5 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 6)  ' Bezeichnung
TextBox31 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 9) ' Lagerort
TextBox6 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 10) ' Regal
TextBox7 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 11) ' Fach
TextBox8 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 14) ' Bestand
TextBox9 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 12) ' Min
TextBox10 = Worksheets("Komplett").Cells(ComboBox3.ListIndex + 4, 13) ' Max
    
If TextBox8 < TextBox9 Then
         TextBox8.BackColor = &HFF&
      Else
         TextBox8.BackColor = &H80000005
  End If
  
End Sub


Wie geschrieben, es gibt Zahlenkombinationen die nicht funzen, warum auch immer. Beispiel: Min 3, Max 50, Bestand 21 => Ergenis Textfeld rot obwohl Min-Stand nicht unterschritten. Das geht hoch bis 29. Bei Bestand 30 zeigt Textfeld dann weiss.
Fragen: Wie kommt das? Ist das ein Fehler von Excel? Kann ich die Abfrage anders realisieren um diesen Missstand zu umgehen?

Puh. Das ist viel Zeugs ;-)
Danke im Voraus

Heinz
Bild


Betrifft: AW: Daten einlesen in Userbox und #NV-Fehler von: Anton
Geschrieben am: 23.02.2005 10:53:05

Hallo Heinz,

ich hab das Problem bei SVERWEIS gehabt.
Hier ist der Text aus der Hilfe:

Servus,
Anton

Zellfehlerwerte
Siehe auch Beispiele Zusatzinfo
Sie können mit der CVErr-Funktion einen Zellfehlerwert in eine Zelle einfügen oder den Wert einer Zelle auf einen Fehlerwert testen. Zellfehlerwerte können die nachfolgend aufgeführten XlCVError-Konstanten sein:

Konstante Fehlernummer Zellfehlerwert
xlErrDiv0 | 2007 | #DIV/0!
XlErrNA | 2042 | #NV
xlErrName | 2029 | #NAME?
XlErrNull | 2000 | #NULL!
XlErrNum | 2036 | #ZAHL!
XlErrRef | 2023 | #BEZUG!
XlErrValue | 2015 | #WERT!


Beispiel
In diesem Beispiel werden die sieben möglichen Zellfehlerwerte in die Zellen A1:A7 in Sheet1 eingefügt.

myArray = Array(xlErrDiv0, xlErrNA, xlErrName, xlErrNull, _
xlErrNum, xlErrRef, xlErrValue)
For i = 1 To 7
Worksheets("Sheet1").Cells(i, 1).Value = CVErr(myArray(i - 1))
Next i
In diesem Beispiel wird eine Meldung angezeigt, falls die aktive Zelle in Sheet1 einen Zellfehlerwert enthält. Sie können dieses Beispiel als Grundgerüst für eine Fehlerroutine für Zellfehlerwerte verwenden.

Worksheets("Sheet1").Activate
If IsError(ActiveCell.Value) Then
errval = ActiveCell.Value
Select Case errval
Case CVErr(xlErrDiv0)
MsgBox "#DIV/0! error"
Case CVErr(xlErrNA)
MsgBox "#N/A error"
Case CVErr(xlErrName)
MsgBox "#NAME? error"
Case CVErr(xlErrNull)
MsgBox "#NULL! error"
Case CVErr(xlErrNum)
MsgBox "#NUM! error"
Case CVErr(xlErrRef)
MsgBox "#REF! error"
Case CVErr(xlErrValue)
MsgBox "#VALUE! error"
Case Else
MsgBox "This should never happen!!"
End Select
End


Bild


Betrifft: AW: Daten einlesen in Userbox und #NV-Fehler von: Heinz
Geschrieben am: 23.02.2005 12:57:20

Hallo Anton,

hatte das schon probiert.
Hatte die Formel folgendermaßen geändert, aber das gleiche Ergebnis erhalten:
=WENN(ISTNV($E4);"";WENN($E4="";"";WENN(SVERWEIS($E4;Komplett!$D$4:$P$4258;7)="";"";SVERWEIS($E4;Komplett!$D$4:$P$4258;7))))

Leider reicht mir eine Fehlermeldung nicht, ich brauche die Vermeidung der Anzeige #NV im Tabellenblatt.

Gruß

Heinz


Bild


Betrifft: AW: Daten einlesen in Userbox und #NV-Fehler von: MichaV
Geschrieben am: 23.02.2005 13:24:28

schick doch mal ne Beispieldatei


Bild


Betrifft: AW: Daten einlesen in Userbox und #NV-Fehler von: Heinz
Geschrieben am: 23.02.2005 19:47:42

Hallo Micha,

also ich hab ja bereits die Sverweis-Formel geschrieben.
=WENN($E4="";"";WENN(SVERWEIS($E4;Komplett!$D$4:$P$4258;7)="";"";SVERWEIS($E4;Komplett!$D$4:$P$4258;7))
Diese vergleicht eine Zelle der aktuellen Tabelle mit anderen Tabelle findet er dort den gleichen Inhalt, sucht er in einer bestimmten Spalte einen Wert und übernimmt diesen. Also ein ganz normaler Sverweis. Normal würde die Anzeige #NV nicht stören. Problematisch wird es halt bei der UserBox-Abfrage.
Dort habe ich eine UserBox in dieser habe ich eine Combobox die die gleiche Spalte einliest welche den Suchbegriff beinhaltet der auch bei Sverweis benutzt wird. Also um bei dem Beispiel zu bleiben liest er alle Werte der Spalte E ein.
Nun kann ich in der UserBox scrollen. Sobald ich einen der Werte anklicke werden die Daten der entsprechenden Reihe in unten drunter stehenden Textboxen angezeigt.
Sobald allerdings in einer der Zellen welche in den Textboxen angezeigt werden ein #NV enthalten ist steigt mir die UserBox mit der in der ersten Post geschriebenen Fehlermeldung aus.
Das soll natürlich nicht sein. Es soll dann halt einfach nichts in der Textbox angezeigt werden. Das sollte eigenbtlich am einfachsten mit einer Änderung der Formel in der Tabelle zu bewerkstelligen sein.
Solltest Du mit den beschriebenen Infos nicht weiterkommen, brauch ich dann mal Deine Email-addy, dann schick ich dir mal eine Beispieldatei.

Danke und Gruß
Heinz



Bild


Betrifft: AW: Daten einlesen in Userbox und #NV-Fehler von: MichaV
Geschrieben am: 24.02.2005 10:14:12

Hi,

=WENN(ISTNV(WENN($E4="";"";WENN(SVERWEIS($E4;Komplett!$D$4:$P$4258;7)="";"";SVERWEIS($E4;Komplett!$D$4:$P$4258;7))));"";WENN($E4="";"";WENN(SVERWEIS($E4;Komplett!$D$4:$P$4258;7)="";"";SVERWEIS($E4;Komplett!$D$4:$P$4258;7))))

oder kurz: wenn(istnv(DeineKompletteFormel);"";DeineKompletteFormel)

Dann kommt erstmal 100%ig kein NV in Deine Zelle.

Gruß!


Bild


Betrifft: AW: Daten einlesen in Userbox und #NV-Fehler von: Heinz
Geschrieben am: 24.02.2005 19:48:05

Hi Micha,
das probier ich dann mal aus und melde mich noch mal ob es funzt oder nicht.
Danke Dir
Gruß
Heinz


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Daten einlesen in Userbox und #NV-Fehler"