Microsoft Excel

Herbers Excel/VBA-Archiv

5 minus 1 ergibt 0 ? | Herbers Excel-Forum


Betrifft: 5 minus 1 ergibt 0 ? von: Reinhard
Geschrieben am: 30.12.2009 14:30:56

Hallo Wissende,

in der beispielmappe:

https://www.herber.de/bbs/user/66889.xls

geht es um Folgendes. Ich will da jmndm. in einem anderen Forum eine Lösung basteln. Die ist noch gar nicht ganz fertig, aber ich denke ich kriege die Lösung alleine hin und deshlab frage ich hier nicht nach.
Nun hakt es aber kolossal an einer sehr unerwarteten Stelle.

Nachstehend ist der Gesamtcode.

Es kommt Fehler 1004 in der While-Zeile:

Z = ZeiN - 1
While .Cells(Z, 7) <> .Cells(ZeiN, 7)

ZeiN hat zu dem Zeitpunkt den Wert 5.
Aber Z den Wert 0 in der While-Zeile!?

Ich kann mir das nicht erklären :-(

Danke ^ Gruß
Reinhard

Sub tt()
Dim wksNeu As Worksheet, wksAlt As Worksheet, ZeiA As Long, ZeiN As Long
Dim Z As Long
Set wksAlt = Worksheets("Tabelle1")
Worksheets.Add after:=Worksheets(Worksheets.Count)
Set wksNeu = ActiveSheet
With wksNeu
   ZeiA = wksAlt.Cells(Rows.Count, 1).End(xlUp).Row
   wksAlt.Range("A1:B" & ZeiA).Copy Destination:=.Range("A1")
   wksAlt.Range("C1:E" & ZeiA).Copy Destination:=.Range("D1")
   .Range("G2:G" & ZeiA).FormulaLocal = "=A2&Text(B2;""hh:mm"")&D2"
   For ZeiN = ZeiA To 3 Step -1
      If Application.CountIf(.Columns(7), .Cells(ZeiN, 7)) > 1 Then
         Z = ZeiN - 1
         While .Cells(Z, 7) <> .Cells(ZeiN, 7)
            Z = Z - 1
         Wend
         .Cells(Z, 3) = "o"
      End If
   Next ZeiN
End With
End Sub

  

Betrifft: Cells(0,7) gibt es nicht. von: Tino
Geschrieben am: 30.12.2009 14:52:20

Hallo,

.Cells(Z, 7) --> Z = 0 und .Cells(0,7) gibt es nicht.

Gruß Tino


  

Betrifft: Ja, aber von: Reinhard
Geschrieben am: 30.12.2009 14:55:29

Hallo Tino,

schubs mich mal vom Schlauch bitte :-)

ZeiN hat den Wert 5

dann kommt

Z = ZeiN - 1
While .Cells(Z, 7) <> .Cells(ZeiN, 7)

Wieso ist da Z 0?

Gruß
Reinhard


  

Betrifft: AW: Ja, aber von: Tino
Geschrieben am: 30.12.2009 15:04:18

Hallo,
in der Schleife machst Du immer wieder
Z = Z - 1
da kommt man irgendwann auf 0 wenn es nicht zuvor abgefangen wird.
Vielleicht funktioniert es mit einer Do Loop Schleife besser.

         Z = ZeiN - 1
         Do While .Cells(Z, 7) <> .Cells(ZeiN, 7)
            Z = Z - 1
            If Z = 0 Then Exit Do
         Loop
         If Z > 0 Then .Cells(Z, 3) = "o"

Gruß Tino


  

Betrifft: AW: Ja, aber von: Reinhard
Geschrieben am: 30.12.2009 16:03:20

Hallo Tino,

danke dir, bin vom Schlauch runter :-)

Gruß
Reinhard