Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
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
Excel VBA If Funktion wird nicht ausgeführt
02.06.2015 08:06:15
Franky
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA If Funktion wird nicht ausgeführt
02.06.2015 08:16:52
Hajo_Zi
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

Anzeige
AW: Excel VBA If Funktion wird nicht ausgeführt
02.06.2015 13:56:51
Franky
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

AW: Excel VBA If Funktion wird nicht ausgeführt
02.06.2015 14:00:41
Hajo_Zi
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

Anzeige
AW: Excel VBA If Funktion wird nicht ausgeführt
05.06.2015 09:46:31
Franky
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
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige