Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
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
Inhaltsverzeichnis

If Schleife - unterschiedliche Ergebnisse F5/F8

If Schleife - unterschiedliche Ergebnisse F5/F8
04.02.2020 17:57:56
Zulu
Hallo liebe Forumsmitglieder,
ich möchte mal wieder eure Hilfe erbitten da ich nicht allein weiterkomme.
Ich habe ein Makro geschrieben, welches im Blatt 1 Spalte V und X von unten durchsucht ob die jeweilige Zelle befüllt ist. Wenn nur Zelle V befüllt, soll es definierte Zellen in ein anderes Tabellenblatt übertragen. Dies funktioniert, wenn ich den Code mit F8 durchlaufe, auch reibungslos. Über die Makroausführung mittels CommandButton kommt es jedoch dazu, dass er die Bedingung, nur übertragen wenn Spalte x nicht befüllt, ignoriert.
Woran liegt das?
Ich habe zum Verständnis eine Beispieldatei hochgeladen. Vielleicht kann hier jemand weiterhelfen
https://www.herber.de/bbs/user/134978.xlsm
Danke und Grüße

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If Schleife - unterschiedliche Ergebnisse F5/F8
04.02.2020 18:29:04
Daniel
Hi
mal so grundsätzlich:
Verwende Option Explicit und dimensioniere alle verwendeten Variablen.
das muss hier zwar nicht der Fehler sein, aber wenn man fremde Menschen um Hilfe bittet, sollte man Fehlermöglichkeiten, die man selbst auf einfache Weise erkennen kann, schon behoben haben oder ganz ausschließen. Dazu gehören beispielsweise Tippfehlern in Variablennamen.
ansonsten, du arbeitest manchmal mit vollständiger Referenzierung (Tabellenblatt.Zellbereich) und manchmal mit Select und Activate und teilweiser Referenzierung (nur Zellbereich).
Stelle bitte vollständig auf vollständige Referenzierung um.
insbesondere wenn man im Einzelstep testst, kann es passieren dass man von Hand auf das andere Blatt wechselt und dann wird das falsche Blatt bearbeitet.
wenn Code in einem Tabellenblattmodul läuft, muss man diesbezüglich weiterhin beachten, dass dann Zellbezüge ohne Tabellenblattangabe nicht auf das aktive Tabellenblatt wirken, sondern auf das das Tabellenblatt des Moduls, in welchem der Code steht!
wie das jetzt in deinem Fall ist, wenn man ein Makro in einem allgemeinen Modul stehen hat, dies aber aus einem Tabellenblattmodul heraus aufruft, weiß ich nicht.
Gruß Daniel
Anzeige
AW: If Schleife - unterschiedliche Ergebnisse F5/F8
04.02.2020 18:31:53
ChrisL
Hi
Siehe die Antwort von Daniel. Hier das Beispiel dazu:
ElseIf Cells(LastRow2, 24) = "" Then
Worksheets("Versand").Select
Cells(LastRow1 + 1, 1).EntireRow.Insert
Range(Cells(LastRow1 + 1, 2), Cells(LastRow1 + 1, 3)).Select
Selection.Merge
Range(Cells(LastRow1 + 1, 5), Cells(LastRow1 + 1, 8)).Select
Selection.Merge

ElseIf Worksheets("Tabelle1").Cells(LastRow2, 24) = "" Then
With Worksheets("Versand")
.Cells(LastRow1 + 1, 1).EntireRow.Insert
.Range(.Cells(LastRow1 + 1, 2), .Cells(LastRow1 + 1, 3)).Merge
.Range(.Cells(LastRow1 + 1, 5), .Cells(LastRow1 + 1, 8)).Merge
End With
cu
Chris
Anzeige
AW: If Schleife - unterschiedliche Ergebnisse F5/F8
05.02.2020 07:50:39
Zulu
Guten Morgen zusammen,
danke für die Hinweise....
Ihr habt schon Recht. Für einen versierteren VBA Nutzer schaut mein Makro sicher zum davon laufen aus ;-) Es ist aktuell auch noch sehr viel gebastel.
Den Hinweis Option Explicit hab ich direkt umgesetzt. Danke Dafür! Deinen Codevorschlag hab ich auch übernommen Chris. Siehe da, es läuft ;-)
Es fällt mir manchmal noch schwer Codes ohne Select zu erstellen. Ich denke das kommt mit der Zeit.
Jetzt habe ich aber noch eine Frage zu dem Code.
Nach der erfolgreichen Übertragung der Punkte möchte ich Rahmen um diese setzen. Dies wird leider auch wieder nur mit F8 durchgeführt. Ich bin der Meinung der Code passt. Schlank ohne Select oder anderen Schnick Schnack aber dennoch kein Erfolg.
Ich hatte auch die Idee über den Weg bedingte Formatierung zu gehen aber das führt auch nicht zum Ziel....
Könnt ihr mir hier nochmal weiterhelfen?
Grüße
Anzeige
AW: If Schleife - unterschiedliche Ergebnisse F5/F8
05.02.2020 08:10:49
Zulu
Ich hab den Post mal noch aktiv geschaltet....
AW: If Schleife - unterschiedliche Ergebnisse F5/F8
05.02.2020 10:45:09
ChrisL
Hi
Gleiches Problem wie letztes mal...
With Worksheets("Versand").Range(Worksheets("Versand").Cells(32, 1), Worksheets("Versand").Cells(LastRow1, 10)).Borders
Hier mal ein (ungesteter) Versuch den Code etwas aufzuräumen:
Sub Test()
Dim LastRow1 As Long
Dim LastRow2 As Long
Dim Counter As Long
Dim lfdNr As Long
Application.ScreenUpdating = False
With Worksheets("Versand")
If .FilterMode Then .ShowAllData
LastRow1 = .Cells(Rows.Count, 1).End(xlUp).Row
LastRow2 = Worksheets("Tabelle1").Cells(Rows.Count, 22).End(xlUp).Row
Do Until Trim(Worksheets("Tabelle1").Cells(LastRow2, 22).Text)  ""
If LastRow2 = 1 Then Exit Do
LastRow2 = LastRow2 - 1
Loop
lfdNr = .Cells(LastRow1, 1).Value
For Counter = LastRow2 To LastRow2 - 40 Step -1
If Worksheets("Tabelle1").Cells(LastRow2, 22).Value = "" Then
LastRow2 = LastRow2 - 1
ElseIf Worksheets("Tabelle1").Cells(LastRow2, 24) = "" Then
.Cells(LastRow1 + 1, 1).EntireRow.Insert
.Range(.Cells(LastRow1 + 1, 2), .Cells(LastRow1 + 1, 3)).Merge
.Range(.Cells(LastRow1 + 1, 5), .Cells(LastRow1 + 1, 8)).Merge
.Cells(LastRow1 + 1, 1) = lfdNr + 1
.Cells(LastRow1 + 1, 2) = Worksheets("Tabelle1").Cells(LastRow2, 8).Value
.Cells(LastRow1 + 1, 4) = "aktiv"
.Cells(LastRow1 + 1, 5) = Worksheets("Tabelle1").Cells(LastRow2, 22).Value
.Cells(LastRow1 + 1, 9) = Worksheets("Tabelle1").Cells(LastRow2, 23).Value
.Cells(LastRow1 + 1, 10) = "100%"
.Cells(LastRow1 + 4, 10) = Date
lfdNr = lfdNr + 1
LastRow1 = LastRow1 + 1
Worksheets("Tabelle1").Cells(LastRow2, 24) = "übertragen"
LastRow2 = LastRow2 - 1
Else
Exit For
End If
Next Counter
With .Range(.Cells(32, 1), .Cells(LastRow1, 10)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
.UsedRange.AutoFilter Field:=4, Criteria1:="aktiv"
End With
End Sub

cu
Chris
Anzeige
AW: If Schleife - unterschiedliche Ergebnisse F5/F8
05.02.2020 11:56:09
Zulu
Hallo Chris,
danke für deine Mühe.
Ich hab nicht gewusst das man ein With über den gesamten Code offen lassen kann um dieses Tabellenblatt erneut ansprechen zu können. Das ist natürlich super smart.
Was ich nicht verstehe. In der Beispieldatei setzt er wie gewollt die Rahmen in meinem Original nicht...
Keine Ahnung was da los ist....
Danke dennoch für die Hinweise. Wird vielleicht doch irgendwann etwas mit dem ordentlichen Programmierstil ;-)
Grüße

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige