Excel VBA If Funktion wird nicht ausgeführt

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Excel VBA If Funktion wird nicht ausgeführt
von: Franky
Geschrieben am: 02.06.2015 08:06:15

Hallo Excel User,
ich bin noch ein VBA Anfänger und habe mir aus dem Internet und anhand meines bescheidenen VBA Wissens folgendes VBA Macro gebastelt.
Die gute Nachricht ist, es läuft nun mittlerweile durch. Die schlechte es macht an zwei Stellen nicht was es soll und ignoriert mich :-(
Tja ist wie im Leben ;-)
Ich weiß aber auch nicht ob dies überhaupt so in Excel machbar ist.
1.Die If Anweisung wird ignoriert und es wird nichts verglichen sondern nur in das "Bearbeitungssheet" kopiert
2. Wenn er im DailySheet die letzte Zeile bearbeitet hat, beginnt er wieder von vorne, anstatt aufzuhören.
Hier das Makro
Dim Useful As Variant
Dim AlsoUseful As Variant
Dim LRendi As Long
Dim L2endi As Long
Dim lngDestinationRowCounter As Long
Dim j As Long
Dim ReiheVar As Long

LRendi = Sheets(1).Range("A" & Rows.Count).End(xlUp).row
Sheets("Bearbeitungssheet").Select

Columns("A:V").Select
Selection.EntireColumn.Hidden = False
Range("A1").Select
ChDir _
"S:\Sett\IntSet\Files\RapSu"
Workbooks.Open Filename:= _
"S:\Sett\Files\Account.xls"
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Cells.Select
Selection.Copy
Windows("Macro Rappelkiste.xlsm").Activate

Sheets(2).Activate
Range("A1").Select
ActiveSheet.Paste
Columns("O:O").Delete
Range("A1").Select
ReiheVar = 1
For lngDestinationRowCounter = 1 To LRendi
Useful = Sheets(1).Range("K" & lngDestinationRowCounter).Value
'MsgBox (Useful)
AlsoUseful = Sheets(1).Range("O" & lngDestinationRowCounter).Value
'MsgBox (AlsoUseful)
L2endi = Sheets(2).Range("A" & Rows.Count).End(xlUp).row
For j = 1 To L2endi

If Sheets(2).Range("K" & j).Value <> Useful And Sheets(2).Range("O" & j).Value <> AlsoUseful Then
Sheets("Daily Sheet").Select
Range("A" & j).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Bearbeitungssheet").Select
Range("A" & lngDestinationRowCounter + LRendi).Select
ActiveSheet.Paste
Else: ReiheVar = ReiheVar + 1
End If
LRendi = LRendi + 1
Next j
Next lngDestinationRowCounter
End Sub
Ich bedanke mich schon mal vorab bei allen Forums-Teilnehmern, welche sich die Zeit nehmen sich meine Anfrage anzusehen und natürlich besonders bei denen welche mir helfen können ;-))
Vielen Dank und einen erfolgreichen schönen Tag
Gruß
Franky

Bild

Betrifft: AW: Excel VBA If Funktion wird nicht ausgeführt
von: Hajo_Zi
Geschrieben am: 02.06.2015 08:16:52
Hallo Franky,
nur wenige sehen die Datei. Ich baue nichts nach.
Ich hätte den Code auch ein wenig anders geschrieben.

Option Explicit
Sub Terdr()
    Dim Useful As Variant
    Dim AlsoUseful As Variant
    Dim LRendi As Long
    Dim L2endi As Long
    Dim lngDestinationRowCounter As Long
    Dim j As Long
    Dim ReiheVar As Long
    Dim Loletzte As Long
    LRendi = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
    Sheets("Bearbeitungssheet").Columns("A:V").EntireColumn.Hidden = False
    ChDir _
        "S:\Sett\IntSet\Files\RapSu"
    Workbooks.Open Filename:= _
        "S:\Sett\Files\Account.xls"
    Rows("1:3").Delete Shift:=xlUp
    Cells.Copy Workbooks("Macro Rappelkiste.xlsm").Sheets(2).Range("A1")
    Workbooks("Macro Rappelkiste.xlsm").Sheets(2).Columns("O:O").Delete
    With Workbooks("Macro Rappelkiste.xlsm")
        ReiheVar = 1
        For lngDestinationRowCounter = 1 To LRendi
            Useful = Sheets(1).Range("K" & lngDestinationRowCounter).Value
            'MsgBox (Useful)
            AlsoUseful = Sheets(1).Range("O" & lngDestinationRowCounter).Value
            'MsgBox (AlsoUseful)
            L2endi = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
            For j = 1 To L2endi
                If .Sheets(2).Range("K" & j).Value <> Useful And _
                    .Sheets(2).Range("O" & j).Value <> AlsoUseful Then
                    With .Sheets("Daily Sheet").Select
                        Loletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), _
                            .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
                        .Range(.Cells(j, 1), .Cells(Loletzte, 1)).Copy _
                            .Sheets("Bearbeitungssheet").Range ("A" & _
                                lngDestinationRowCounter + LRendi)
                    End With
                Else
                    ReiheVar = ReiheVar + 1
                End If
                LRendi = LRendi + 1
            Next j
        Next lngDestinationRowCounter
    End With
End Sub


Bild

Betrifft: AW: Excel VBA If Funktion wird nicht ausgeführt
von: Franky
Geschrieben am: 02.06.2015 13:56:51
Hallo Hajo,
vielen Dank für Deine schnelle Hilfe.
Das Maro läuft bis zu Zeile
Rows("1:3").Select dann startet es wieder von vorne und stürzt ab mit der Message Run-time error '9': Subscript out of range in dieser Zeile:
Sheets("Bearbeitungssheet").Columns("A:V").EntireColumn.Hidden = False
Was ich erstaunlich finde, ist die Tatsache, dass das File schon kopiert wurde, obwohl er mir diesen Schritt wenn ich das Makro mit F8 in Einzelschritten durchgehe nicht anzeigt.
Viele Grüße
Franky

Bild

Betrifft: AW: Excel VBA If Funktion wird nicht ausgeführt
von: Hajo_Zi
Geschrieben am: 02.06.2015 14:00:41
ich interpretiere es mal jetzt so, ´mein Code hat Dir nicht gefallen. Da Du eine Zeile ansprichst, die es in meinem Code nicht gibt.
Eine zeile war falsch
.Sheets("Daily Sheet").Select
ändefrn in
.Sheets("Daily Sheet")
Ich bin dann also raus, da mein Code nicht mehr relevant.
Gruß Hajo

Bild

Betrifft: AW: Excel VBA If Funktion wird nicht ausgeführt
von: Franky
Geschrieben am: 05.06.2015 09:46:31
Hallo Hajo,
da ich Anfänger bin, steht es mir gar nicht zu jemanden der mir helfen will zu kritisieren oder zu sagen, dass mir der Code nicht gefällt. Zumal ich nicht mal alles so verstehe.
Mein Ziel war nur alles mit Hilfe des Forums und den Teilnehmern zum Laufen zu bringen.
Wie, war mir ehrlich gesagt eigentlich egal, Hauptsache es funzt.
Das ich diese eine Zeile angesprochen habe, lag daran, dass danach die Fehlermeldung angezeigt wurde und nicht daran, dass mir Dein Code nicht gefallen hat. Ich wollt es nur nachvollziehen wie das Macro nun funktioniert.
Nachdem ich Deinen Korrekturvorschlag angepasst habe, läuft das Makro durch.
Leider funktioniert der Vergleich immer noch nicht.
If .Sheets(2).Range("K" & j).Value <> Useful And _
.Sheets(2).Range("O" & j).Value <> AlsoUseful Then
With .Sheets("Daily Sheet")
Da habe ich garantiert etwas falsch gemacht, vielleicht auch schon bei den Variablen, aber da ich darin nicht firm bin, habe ich da wohl keine Chance.
Die Messageboxen sind leer, wenn ich das Makro in Einzelschritten laufen lasse ????
Useful = Sheets(1).Range("K" & lngDestinationRowCounter).Value
'MsgBox (Useful)
AlsoUseful = Sheets(1).Range("O" & lngDestinationRowCounter).Value
'MsgBox (AlsoUseful)
Ich wünsche Dir ein schönes Wochenende und sorry falls ich mich in irgendeiner Form falsch verhalten habe, das war nicht meine Intention.
Viele Grüße
Franky

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel VBA If Funktion wird nicht ausgeführt "