Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Fehlermeldung

VBA - Fehlermeldung
10.11.2017 00:27:31
Marco
Hallo alle,
ich habe schon mal dieses Thema angesprochen und eine weile ruhen lassen in der Hoffnung das ich das Problem vielleicht selber lösen kann. Aber ich schaff es nicht. Wenn ich meinen Button betätige der mir einzelne Summen im Tabellenblatt 1 abbilden soll, erhalte ich die unten aufgeführt Fehlermeldung.
Die Fehlermeldung erscheint im VBA Code in Zeile 30, Spalte 1, in Tabelle1. Siehe Bild. Die einzelnen Ergebnisse der Variablen sind folgende:
AnlMatFehl(NA, NM, NF)=
Ich vermute mal das es vielleicht am Ergebnis NF = -1 liegt, aber das war es auch. Es ist nur eine Vermutung, aber ich weiß es nicht und ich wüsste jetzt auch nicht wie ich die Meldung beseitigen kann.
Ich habe den Tipp erhalten alle Variablen der Prozedur zu zuordnen und zu deklarieren. Das habe ich gemacht und alle das Format Integer oder long gegeben, sowie die Klammerwerte von 100 auf 1000 hochgesetzt. Aber die Fehlermeldung ist die gleiche geblieben.
Kann es vielleicht sein das die Ergebnisse, welche der Code berechnet zu groß ist? Oder liegt es daran das in der Datenbank zahlen, buchstaben sowie sonderzeichen gemischt eingelesen werden?
Es wäre nett wenn mir jemand helfen könnte, da ich selber nicht drauf komme. Danke
Userbild
Beispiel Datei:
https://www.herber.de/bbs/user/117580.xlsm

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Fehlermeldung
10.11.2017 02:32:28
fcs
Hallo Marco,
-1 ist ein nicht zulässiger Index-Wert das von dir deklarierte Array, dessen Index für alle Dimensionen bei 0 beginnt.
-1 ergibt sich für NF wenn der Fehlertext in deiner Auswertung noch keine Nummer zugeordnet bekommen hat.
Du musst den Wert von NF prüfen -ähnlich wie die anderen Index-Werte- dann allerdings nicht die Sub per Exit verlassen, sondern z.B. eine Meldung anzeigen und die Schleife fortsetzen.
Gruß
Franz
Private Sub Fehlermeldungen_Auswerten_Click()
Dim von, bis, dat, z1, Be, z
'Dim FeSum(10000)     'Zeile deaktiviert  Array ist im Modul1 als Public deklariert      _
fcs
Dim bolNrFehl As Boolean      'ergänzt für optionale deaktivierung der Meldung           _
fcs
z1 = 10
Call bereiche
Call Fehlermeldungen
Call Anlagen
Call bereiche
Call Materialien2
von = Sheets("Dashboard").Cells(7, 5)
bis = Sheets("Dashboard").Cells(8, 5)
Erase FeSum
Erase AnlMatFehl
For z = 9 To 10000
If Sheets("Data Base").Cells(z, 5)  "" Then
dat = Sheets("Data Base").Cells(z, 8)
If dat >= von And dat  "" Then
Call löschen(z)
Call check(z)
End If
Next z
End Sub

Anzeige
AW: VBA - Fehlermeldung
10.11.2017 03:57:49
Marco
Danke Franz, ich habe mir deine Änderung angeschaut und bin dir dankbar für deine Hilfe, aber wieso tritt der Fehler überhaupt auf bzw. warum bekommen manche Fehlertexte in meiner Auswertung ein -1 und keine Nummer?
Wenn ich jetzt die Msg mit Fehlertext bestätige (die du eingestellt hast) läuft der Code weiter bis zum schluss und wenn der Code fertig ist erscheinen die händisch bestätigten Fehlertexte nicht in der Auswertung. Aber diese will ich ja auch sehen. Wenn die Fehler z.b. 1000 mal vorkommen muss ich 1000 mal die msg bestätigen und dann werden sie nicht in der auswertung erfasst.
Die Fehlertexte werden ja nicht gepflegt bzw. sind nicht fest so wie die Anlagennamen und die Materialnummern aus dem Tabellenblatt StammDaten, sondern die sind individuell die können ja in jeder eingelesenen CSV datei total anders sein.
Liegt es vielleicht doch an der länge des fehlertextest oder sogar an der summe aus Anlagennummer + Materialnummer + Fehlertext + Fehlerhäufigkeit?
Anzeige
AW: VBA - Fehlermeldung
10.11.2017 09:08:04
fcs
Hallo Marco,
das Problem ist im Makro "Fehlermeldungen" im Modul1.
Du hast dort den Schleifen-Zähler mit 500 fest vorgegeben, aber im Blatt "Data Base" sind mer Datenzeilen.
Dadurch werden nicht alle Fehlertexte erfasst und bei der weiteren Auswertung kann der Wert -1 für NF vorkommen.
Der Max-Wert für den Schleifenzähler muss dynamisch angepasst werden.
Fall mehr als 300 verschiedene Fehlertexte vorkommen können, dann musst du die Größe der Daten-Arrays erhöhen.
Gruß
Franz
Public Sub Fehlermeldungen()
Dim f, n, found
AnzFehler = 0
With Sheets("Data Base")
For z = 9 To .Cells(.Rows.Count, 9).End(xlUp).Row                  '500
f = .Cells(z, 9)
If f  "" Then
found = False
For n = 1 To AnzFehler
If f = Fehler(n) Then found = True
Next n
If Not found Then
AnzFehler = AnzFehler + 1
Fehler(AnzFehler) = f
End If
End If
Next z
End With
'Debug.Print "AnzahlFehler = " & AnzFehler
End Sub

Anzeige
AW: VBA - Fehlermeldung
10.11.2017 09:44:22
Marco
Danke Franz, ich probiere es gleich aus. Meinst du mit Fehlertexte unterschiedliche Fehlercodes? Also ich habe z.B. 10.000 Zeilen und in denen kommen 200 verschiedene Fehlermeldungen vor oder meinst du wenn ich angenommen 10.000 Zeilen mit 10.000 Fehlern habe davon aber nur 200 unterschiedliche vorkommen, muss ich den Arrag trotzdem auf 10.000 stellen?
Gruß Marco
AW: VBA - Fehlermeldung
10.11.2017 10:29:22
fcs
Hallo Marco,
wenn du 200 verschiedene Fehler hast dann reicht die array-Größe von 300.
Aber falls du irgendwo gegen die Arraygröße stößt, dann meldet sich Excel mit einer Fehlermeldung.
Gruß
Franz
AW: VBA - Fehlermeldung
14.11.2017 17:52:19
Marco
Hi Franz tut mir leid das ich mich erst so spät melde, aber ich konnte die Änderung nicht früher testen.
Zu deiner Änderung, das Makro läuft jetzt durch ohne stehen zu bleiben. Aber wieso erhält NF in meiner Auswertung manchmal den Wert -1. Wie kommt es dazu? Ich habe z.B. die Fehlermeldung "Schweißweg_Position_Weg32_Standv09". Warum wird für diese Meldung -1 hinterlegt? Kann man den Fehler beseitigen das die Auswertung 100% durchläuft und alle Datensätze erwischt?
Gruß Marco
Anzeige
AW: VBA - Fehlermeldung
14.11.2017 22:27:11
fcs
Hallo Marco,
den Grund, warum eine Fehlermeldung nicht in eine Nr. umgesetzt wird, kann ich nicht nachvollziehen.
Ich hab jetzt mal die Erstellung der Listen für Anlagen, Materialien und Fehler in eine andere Methode umgestellt und die Größe der Arrays dyamisiert (auf minimale Größe umgestellt).
Dadurch sollte auch die Abarbeitung der Makros etwas schneller erfolgen.
https://www.herber.de/bbs/user/117675.xlsm
Gruß
Franz
AW: VBA - Fehlermeldung
15.11.2017 09:44:42
Marco
Danke Franz. Jetzt habe ich meine Daten in die Excel Datei von dir gespielt und eine Fehlermeldung halten weil NA = -1 ist. Jetzt scheint NF zu passen aber NA nicht mehr. Kann es vielleicht daran liegen das die Spalten unterschiedliche Formate haben und deswegen das manchmal spinnt?
Gruß Marco
Anzeige
AW: VBA - Fehlermeldung
15.11.2017 10:04:31
Marco
Franz das ist ganz komisch. Ich habe gerade den Fehlertext der als NF = -1 erkannt wird in eine andere Zeile kopiert und nochmal den Button betätigt. Und jetzt kommt keine Meldung mehr. Es wird sogar der Fehler erkannt und im Dashboard aufgeführt. Wie kann das denn sein das ist ja total komisch.
Kann es vielleicht an der unterschiedlichen Formatierung der einzelnen Spalten liegen. Oder an der Länge des Textes die in der Zelle steht? Oder wäre es auch denkbar das wenn in der Stammdatenbank die Formatierung der Zellen in denen die Materialnummern und Stationsnamen stehen es da zu einem Fehler kommt weil manchmal nur Zahlen und mal Zahlen mit text vermischt sind?
Es ist nämlich so das bei mir die Zeilen, Spalten oder auch einzelne Zellen unterschiedliche Format wie Text, Zahlen, Standard usw.... haben. Vielleicht meckert der Code deswegen.
Anzeige
AW: VBA - Fehlermeldung
15.11.2017 15:11:30
fcs
Hallo Marco,
grundsätzlich ist ein Problem wenn man Ziffernfolgen (Text) mit Zahlen(Zellinhalt) vergleichen will.
Für Excel ist "111" &lt&gt 111.
Man muss dann dafür sorgen, dass alles in einem einheitlichen Datentyp verglichen wird. Da bei dir Text/Zahlen gemischt vorkommen sollte hier dann alles in Text umgewandelt werden.
Dazu müssen alle relevanten Variablen als String deklariert werden.
Bei Vergleich von String-Variablen mit Zellinhalt muss dann immer mit der Text-Eigenschaft der Zellen verglichen werden.
z.B.
If Fehler(n) = .Cells(Zeile, 5).Text Then
In wieweit dies in den Makros noch relevant ist hab ich auf die Schnelle nicht überprüft.
Gruß
Franz
Anzeige
AW: VBA - Fehlermeldung
16.11.2017 16:13:42
Marco
Hi Franz, ich habe jetzt nochmal den Code durchgeschaut, aber ich konnte keine relevanten Variablen finden die nicht als String deklariert sind.
Was mir noch aufgefallen ist dass es anscheinend vollkommen egal ist was in der Zelle in der die Meldung NF = -1 steht, steht. Wenn ich nämlich den Inhalt ändere und nur 1 - 2 Zahlen rein schreibe bekomme ich trotzdem die Meldung NF = -1. Es kann also nicht an dem Inhalt liegen der in der Zelle steht sondern am Zellenformat oder an der Deklaration.
Was die Deklaration angeht konnte ich aber nichts finden. Kannst du mir, wenn du irgendwann mal Zeit hast vielleicht helfen? Oder soll ich nochmal komplett von vorne anfangen mit allem, weil der Fehler nicht auffindbar ist?
Gruß Marco
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige