Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

If-Anweisung wird grundsätzlich ausgeführt!

If-Anweisung wird grundsätzlich ausgeführt!
christian
Hallo, habe das Problem, dass die zweite If-Anweisung in folgender Prozedur offensichtlich auch dann ausgeführt wird, wenn die entsprechende Bedingung garnicht erfüllt ist!!! Testansatz wird daher bei jedem Durchlauf der Do Until-Schleife um 1 erhöht und Platte wird = 1 gesetzt. Das hat zur Folge, dass nur die erste Spalte des Arrays positive_Wells genutzt wird. dadurch werden 3mal soviele Tabellenblätter wie vorhanden benötigt und es kommt beim auslesen des Arrays zur Fehlermeldung " Index außerhalb des gültigen Bereichs".
Woran liegt das und was kann man dagegen tun?
Gruß Christian

Private Sub positive_Wells_zählen()
Const Grenzwert As Single = 0.7
Dim Zähler1, Zähler2, Platte As Integer
Dim positive_Wells(1 To 3, 1 To 8), a, b, c, d, Konzentration, Zeile, Spalte, Leerzelle, Testansatz As Byte
Dim z1, s1 As Byte
Zähler1 = 5
Testansatz = 1
Platte = 0
Do Until Leerzelle = 4
If Worksheets("Rohdaten").Cells(Zähler1, 1) = "<>" Then
Platte = Platte + 1
For z1 = 1 To 8
For s1 = 1 To 3
positive_Wells(s1, z1) = 0
Next s1
Next z1
If Platte > 3 Then
Testansatz = Testansatz + 1
Platte = 1
End If
For Konzentration = 1 To 8
Select Case Konzentration
Case 1 To 2
a = 1
b = 4
Case 3 To 4
a = 5
b = 8
Case 5 To 6
a = 9
b = 12
Case 7 To 8
a = 13
b = 16
End Select
Select Case Konzentration
Case 1, 3, 5, 7
c = 2
d = 13
Case 2, 4, 6, 8
c = 14
d = 25
End Select
For Zeile = Zähler1 + a To Zähler1 + b
For Spalte = c To d
With Worksheets("Rohdaten").Cells(Zeile, Spalte)
If .Value > Grenzwert Then positive_Wells(Platte, Konzentration) _
= positive_Wells(Platte, Konzentration) + 1
End With
Next Spalte
Next Zeile
Next Konzentration
For Konzentration = 1 To 8
For Platte = 1 To 3
Worksheets(Testansatz).Cells(27 + Konzentration, 3 + Platte) = positive_Wells(Platte, Konzentration)
Next Platte
Next Konzentration
Leerzelle = 0
ElseIf Worksheets("Rohdaten").Cells(Zähler1, 1) = "" Then Leerzelle = Leerzelle + 1
End If
Zähler1 = Zähler1 + 1
Loop
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: If-Anweisung wird grundsätzlich ausgeführt!
RAnton
Hallo Christian,
ich denke dein Problem liegt hier:
If Worksheets("Rohdaten").Cells(Zähler1, 1) = "" Then
.
.
.
ElseIf Worksheets("Rohdaten").Cells(Zähler1, 1) = "" Then Leerzelle = Leerzelle + 1
End If
Wenn die die Zelle weder leer noch die Zeichen "" enthält.....was machst du dann?
In diesem Fall wird Leerzelle nicht erhöht.
Gruß
Anton
Danke, aber glaube das Problem leigt wo anders
christian
Zunächst mal Danke! Aber glaube da liegt nicht das Problem. Habe mich wohl unklar ausgedrückt.....Die Prozedur ließt Fotometer-Meßwerte von 384-Well-Microtiterplatten ein (falls Dir das was sagt). in der ersten Zeile der ersten Spallte jeder Platte ist das Zeichen "" enthalten. Wird dieses Zeichen gefunden, sollen die Meßwerte der Platte mit einen Grenzwert verglichen werden. Ist der Messwert größer als der Grenzwert, wird die Zahl der positiv gewerteten Wells um 1 erhöht (und dies bei 8 Verdünnungen der Testsubstanz, jede Verdünnung hat 48 Wells). Zwischen den Werten der einzelnen Platten sind jeweils 3 Leerzeilen. Wird 4 mal nacheinander eine Leerzelle gefunden, heißt das, dass alle Platten abgearbeitet wurden und die Schleife daher abgebrochen wird. Das Problem liegt nun darin, dass Testnsatz statt bei jedem 3. Ablauf der Schleife jedesmal um 1 erhöt wird. Platte wird nicht bis 3 hochgezählt, sondern bei jedem Durchlauf gleich 1 gesetzt.
Gruß
Christian
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige