Hallo,
ich habe ein Problem mit einer .xlsm Datei, in der sich mehrere von mir geschriebene VBA Funktionen befinden.
Das Tool selber soll eine aus JIRA exportierte Datei überprüfen und daraus eine Fehlerstatistik erstellen. Und ohne daran etwas zu verändern, funktioniert das Tool nicht mehr vollständig.
Das heißt konkret, daß aufgerufene Funktionen in manchen Zellen durchaus noch funktionieren, in anderen aber bei dem Durchlauf abgebrochen werden und dann "#WERT!" anzeigen. Es wirkt wie bei einem Speicherüberlauf. Im Debugger konnte ich die Schleifen problemlos durchlaufen und sie ergaben auch das richtige Ergebnis, bis sie dann bei dem einen Aufruf bei Element 287 abbrach, während sie bei dem vorherigen Aufruf aus einer anderen Zelle völlig problemlos bis zum letzten Element (365) durchlief.
Als Beispiel habe ich eine Funktion angegeben, die tatsächlich in zwei Zellen ein korrektes Ergebnis erzielt, in den anderen aber nicht. Zusätzlich habe ich zwei Screenshots angehängt, bei denen die Situation der Ausgabe und die genutzten Parameter dargestellt werden.
Für Hilfe (oder zumindest eine Erklärung), wäre ich sehr dankbar.
Viele Grüße
Murdock
Aufruf aus Zelle E27 (funktioniert):
=GeleWo(Konfiguration!C4;Konfiguration!A5;Konfiguration!E14;Konfiguration!O4;Konfiguration!O13;Konfiguration!H4;Konfiguration!H7;Konfiguration!H8;Konfiguration!H12;Konfiguration!H13;Konfiguration!H9;Konfiguration!H10;Konfiguration!O11;Konfiguration!Q12)
Aufruf aus Zelle E28 (Ergebnis #WERT!)
=GeleWo(Konfiguration!C4;Konfiguration!A6;Konfiguration!E14;Konfiguration!O4;Konfiguration!O13;Konfiguration!H4;Konfiguration!H7;Konfiguration!H8;Konfiguration!H12;Konfiguration!H13;Konfiguration!H9;Konfiguration!H10;Konfiguration!O11;Konfiguration!Q12)
Function GeleWo(IssueType As String, PrioType As String, StatType As String, Project As String, Label As String, BugCol As Integer, PrioCol As Integer, StatCol As Integer, PlattCol As Integer, LabelCol As Integer, CreaCol As Integer, ActCol As Integer, LastRow As Integer, DateBaseName As String) As Integer
Dim i As Integer
GeleWo = 0
For i = 4 To LastRow
If StrComp(IssueType, Worksheets(DateBaseName).Cells(i, BugCol).Value) = 0 Then 'Abfrage, ob Zeileneintrag einen Fehler darstellt
If StrComp(PrioType, Worksheets(DateBaseName).Cells(i, PrioCol).Value) = 0 Then 'Abfrage, ob Zeileneintrag die gesuchte Fehlerkategorie enthält
If StrComp(StatType, Worksheets(DateBaseName).Cells(i, StatCol).Value) = 0 Then 'Abfrage, ob Zeileneintrag einen geschlossenen Fehler enthält
If StrComp(Project, Worksheets(DateBaseName).Cells(i, PlattCol).Value) = 0 Then 'Abfrage, ob Fehler zu gewünschtem Projekt gehört
If InStr(Label, Worksheets(DateBaseName).Cells(i, LabelCol).Value) <> 0 Then 'Abfrage, ob Fehler mit gewünschten Label versehen ist
If Label = "0" Then 'Abfrage, ob ein Label angefügt wurde (falls übergebene Suchvariable Label = "0" ist, dann wird explizit nach Fehlern ohne Label gesucht)
If CDate(Worksheets(DateBaseName).Cells(i, CreaCol).Value) <= (Date - 8) Then 'Abfrage, ob Zeilenentrag nicht innerhalb der letzten 7 Tage erstellt wurde
If CDate(Worksheets(DateBaseName).Cells(i, ActCol).Value) > (Date - 8) Then 'Abfrage ob Zeileneintrag innerhalb der letzten 7 Tage geändert wurde
GeleWo = GeleWo + 1
End If
End If
End If
If Worksheets(DateBaseName).Cells(i, LabelCol).Value <> "" Then 'Abfrage, ob ein Label vorhanden ist oder die vorherige Abfrage deshalb erfolgreich war, weil InStr(a, b) = 0, da b = ""
If CDate(Worksheets(DateBaseName).Cells(i, CreaCol).Value) <= (Date - 8) Then 'Abfrage, ob Zeilenentrag nicht innerhalb der letzten 7 Tage erstellt wurde
If CDate(Worksheets(DateBaseName).Cells(i, ActCol).Value) > (Date - 8) Then 'Abfrage ob Zeileneintrag innerhalb der letzten 7 Tage geändert wurde
GeleWo = GeleWo + 1
End If
End If
End If
End If
If Label = "Alle" Then 'Anzeige aller Fehler unabhängig vom Label
If CDate(Worksheets(DateBaseName).Cells(i, CreaCol).Value) <= (Date - 8) Then 'Abfrage, ob Zeilenentrag nicht innerhalb der letzten 7 Tage erstellt wurde
If CDate(Worksheets(DateBaseName).Cells(i, ActCol).Value) > (Date - 8) Then 'Abfrage ob Zeileneintrag innerhalb der letzten 7 Tage geändert wurde
GeleWo = GeleWo + 1
End If
End If
End If
End If
End If
End If
End If
Next
End Function
|