AW: in VBA Null, "", und 0 richtig erkennen
04.07.2008 20:50:42
Karsten
Hallo Reinhard,
hier nun etwas ausführlicher.
Ich lese aus bestimmten Zellen die Ergebnisse des aktuellen Bundesligaspieltages aus und übergebe diese an ein Array. Beim Auslesen der Ergebnisse bekomme ich dann für diejenigen Begegnungen , die noch nicht gespielt wurden und ich auch keine Werte im Sheet eingetragen habe immer eine 0 zurück.
Wenn eine Spielpaarung noch nicht stattgefunden hat, dann soll meine VBA-Prozedur 0 Punkte für die Vereine x und Vereine y im Array speichern. Hier speichert mir die VBA-Prozedur aber immer die Ziffer 1. Weil diese beiden Nullen (0) ein Unentschieden vortäuschen, für ein Spiel, welches noch gar nicht stattgefunden hat. Somit wird für beide Vereine eine 1 als Punkt vergeben.
Das soll nicht sein, Ich erwarte hier eine 0 als Punkt für die beiden Vereine.
ich weiß nicht, ob der VBa-Code filfreich ist, aber ich stelle ihn mal zur Verfügung.
Public Function Spieltage_lesen(a, b, c, d, f)
'Spieltage 1 bis zum aktuellen Spieltag vom Sheet "Master" lesen
Debug.Print "k", "Spt", "TG", "TK", "TD", "Verein"
If Sheets("Master").Visible = False Then
Sheets("Master").Visible = True
Aktuelles_Sheet_ausblenden
'Sheets("Master").Select
End If
'Spiele vom Sheet Master einlesen
If a = 1 Then 'Spieltage 1-17 bzw. 18-34
a = 1
Else
a = 18
End If
k = 1 'Variablen innerhalb eines Spieltages auf eins setzen
For x = 4 To 220
With myErgebnis(a)
.Verein(k) = Cells(x, b)
.TG(k) = Cells(x, d)
.TK(k) = Cells(x, f)
.TD(k) = .TG(k) - .TK(k)
Debug.Print k, a, .TG(k), .TK(k), .TD(k), .Verein(k)
k = k + 1 'Variablen innerhalb eines Spieltages um eins erhöhen
.Verein(k) = Cells(x, c)
.TG(k) = Cells(x, f)
.TK(k) = Cells(x, d)
.TD(k) = .TG(k) - .TK(k)
Debug.Print k, a, .TG(k), .TK(k), .TD(k), .Verein(k)
'Nur bis zum aktuellen Spieltag einlesen
'fehlt noch
'Bei Spieltagen , die nur zum Teil gespielt sind (Fr/Sa/So)
'die Punkte auf Null setzen, bei den Mannschaften, die noch nicht gespielt haben
If IsNull(.TG(k - 1)) Then
.Punkte(k - 1) = 0
.Punkte(k) = 0
Else
'Punkte berechnen
If .TG(k - 1) > .TG(k) Then .Punkte(k - 1) = 3
If .TG(k - 1)