Thema Datum  Von Nutzer Rating
Antwort
Rot Excel VBA: Falsche Ausgabe bei If-Abfrage
16.10.2012 22:46:32 resa
NotSolved
17.10.2012 12:51:18 Dekor
NotSolved
17.10.2012 18:31:55 resa
Solved

Ansicht des Beitrags:
Von:
resa
Datum:
16.10.2012 22:46:32
Views:
1599
Rating: Antwort:
  Ja
Thema:
Excel VBA: Falsche Ausgabe bei If-Abfrage

Hallo an alle,

ich habe vor etwa zwei wochen angefangen, mich mit Excel VBA zu beschäftigen und hänge nun an einem Problem, das meiner Meinung nicht bestehen dürfte. Ich habe das Problem mal in einem Beispiel zusammengefasst, damit es leichter nachvollziebar ist. Ich möchte einen Bereich auswerten, der wie folgt aussieht:

         A                        B                         C

xxxx 01.10.2012 01.10.2012
xxxx 02.10.2012 02.10.2012
xxxx 03.10.2012 03.10.2012
yyyyy 02.10.2012 02.10.2012
yyyyy 03.10.2012 03.10.2012
yyyyy 04.10.2012 04.10.2012
yyyyy 05.10.2012 05.10.2012
zzzzz 08.10.2012 08.10.2012
zzzzz 09.10.2012 09.10.2012
zzzzz 10.10.2012 10.10.2012
zzzzz 11.10.2012 11.10.2012

Dazu gehört folgender Beispielcode:

Option Explicit

Sub test()
Dim m As Integer

For m = 1 To 20

'Schleife wird durchgeführt, bis sich die Einträge in Spalte A
'voneinander unterscheiden

Do Until Cells(m, 1) <> Cells(m + 1, 1)
    If Cells(m, 2) < Cells(m + 1, 2) Then     'Zelle m+1 in Spalte B löschen,
        Cells(m + 1, 2).Delete                ' wenn diese kleiner ist als die vorherige
    End If
    If Cells(m, 3) < Cells(m + 1, 3) Then     ' Zelle m in Spalte C löschen,
        Cells(m, 3).Delete                    'wenn diese kleiner ist als die vorherige
    End If
    Cells(m, 1).Delete                        'nach erfolgreicher Abfrage wird die
Loop                                          'entsprechende Zelle in Spalte A auch gelöscht
If Cells(m + 1, 1) = "" Then
    Exit For                                  'Abbruchbedingung, falls am Ende angekommen
End If
Next m

End Sub

Ziel ist es, dass ich am Ende nur noch drei Zeilen übrig behalte, die mir einen Text in Spalte A liefert, in Spalte B das früheste zugehörige Datum und in Spalte C das späteste zugehörige Datum:

xxxx 01.10.2012 03.10.2012
yyyyy 02.10.2012 05.10.2012
zzzzz 08.10.2012 11.10.2012

Das geht mit Sicherheit auch irgendwie einfacher, aber die Ausgangswerte bekomme ich aus einem bereits bestehenden VBA-Programm und möchte sie mit diesem Ziel auswerten. Und was ich nicht ganz verstehe, ist, dass alles funktioniert, bis die Schleife den vorvorletzten Wert erreicht. Bei dem Schritt:

If Cells(m, 2) < Cells(m + 1, 2) Then
    Cells(m + 1, 2).Delete           
End If

löscht er statt der Zelle in Spalte B die in Spalte C und ich habe nur noch das:

xxxx 01.10.2012 03.10.2012
yyyyy 02.10.2012 05.10.2012
zzzzz 08.10.2012 10.10.2012
zzzzz 11.10.2012  

Danach stimmt die Ausgabe selbstverständlich nicht mehr.

Es wäre schön, wenn jemand einen Tip hätte, ich weiß nämlich wirklich nicht, was die Falschlöschung verursacht.

Für Hinweise jetzt schonmal vielen, vielen Dank und viele Grüße.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel VBA: Falsche Ausgabe bei If-Abfrage
16.10.2012 22:46:32 resa
NotSolved
17.10.2012 12:51:18 Dekor
NotSolved
17.10.2012 18:31:55 resa
Solved