Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
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

For Next Schleife - dynamisch ??

For Next Schleife - dynamisch ?
Jürgen
Hallo Helferleins,
habe folgendes Problem:
Ich öffne eine Exceldatei, und richte Spalten und Zeilen aus.
Teilweise füge ich Zeilen ein. Makro funktioniert so weit so gut.
Zu beginn ermittle ich die Anzahl der Zeilen mit:
Zeilen_Datei1 = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Daraus ergibt sich eine For next schleife:
For zeile = 7 To Zeilen_Datei1
'For reihe = 1 To 3
'If reihe = 1 Then spalte = "A" Else If reihe = 2 Then spalte = "B" Else If reihe = 3 Then spalte = "C"
Range("C" & zeile).Select
If Left(ActiveCell(), 4) = "3 x " Or Left(ActiveCell(), 4) = "8mm " Then
zeilenzähler = ActiveCell.Row
Feederb = Left(ActiveCell(), 4)
End If
If zeilenzähler > 0 And ActiveCell() = "2" Or ActiveCell() = "3" Then
If ActiveCell.Row - 2 Rows(ActiveCell.Row).Select
Selection.Insert Shift:=xlToDown, CopyOrigin:=xlFormatFromLeftOrAbove
Zeilen_Datei1 = Zeilen_Datei1 + 1
Else
zeilenzähler = ActiveCell.Row
End If
If ActiveCell() = "3" Or Feederb = "8mm " And ActiveCell() = "2" Then zeilenzähler = 0
End If
If ActiveCell() = "2" Or ActiveCell() = "3" Then
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'Zeile nach rechts schieben
End If
'Next reihe
Next zeile
Erase Feeder ' Array löschen
Das Problem ist nun, das ich beim einfügen einer Zeile den Wert der Variablen Zeilen_Datei1 um 1 hochzähle.
Allerdings geht die Schleife nur bis zum Wert der beim Start der Schleife definiert war.
Hoffe alles ist verständlich.
Gruß Jürgen

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

Betreff
Benutzer
Anzeige
AW: For Next Schleife - dynamisch ?
15.08.2012 07:25:58
Josef

Hallo Jürgen,
arbeite von unten nach oben.
Zeilen_Datei1 = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)

For zeile = Zeilen_Datei1 To 7 Step -1
  If Left(Cells(zeile, 3), 4) = "3 x " Or Left(Cells(zeile, 3), 4) = "8mm " Then
    zeilenzähler = Cells(zeile, 3).Row
    Feederb = Left(Cells(zeile, 3), 4)
  End If
  If zeilenzähler > 0 And Cells(zeile, 3) = "2" Or Cells(zeile, 3) = "3" Then
    If Cells(zeile, 3).Row - 2 < zeilenzähler Then
      Rows(zeile).Insert Shift:=xlToDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Else
      zeilenzähler = Cells(zeile, 3).Row
    End If
    If Cells(zeile, 3) = "3" Or Feederb = "8mm " And Cells(zeile, 3) = "2" Then zeilenzähler = 0
  End If
  If Cells(zeile, 3) = "2" Or Cells(zeile, 3) = "3" Then
    Cells(zeile, 3).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'Zeile nach rechts schieben
  End If
Next


« Gruß Sepp »

Anzeige
AW: For Next Schleife - dynamisch ?
15.08.2012 08:09:09
Jürgen
Hallo Sepp,
danke für den Tip.
Noch eine Frage, wie hast Du den Code so schön in die Antwort gebracht ?
Also das er in dem Rahmen ist ?
Jürgen
AW: For Next Schleife - dynamisch ?
15.08.2012 08:14:32
Hajo_Zi
Hallo Jürgen,
das ist HTML, dafür gibt es auch Tools. Oder hier im Forum den Schalter Zitat.

' ************************************************************* _
'  Modul:  mdl_HTML  Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Sub HTML()
AddIns("Tabellenanzeige_In_Html_Addin") _
.Installed = False
AddIns("Tabellenanzeige_In_Html_Addin") _
.Installed = True
End Sub
Sub FormelnEinAus()
ActiveWindow.DisplayFormulas = Not ActiveWindow. _
DisplayFormulas
End Sub

 
Anzeige
AW: For Next Schleife - dynamisch ?
15.08.2012 15:34:52
Jürgen
Hallo,
gerade aufgestanden nach der Nachtschicht.
Danke für die Antworten. Von untern anfangen ist logisch, da die Zellen beim einfügen ja nach unten rutschen. Allerdings weiß ich nicht wie ich das in meinem Fall hinbekommen soll.
Habe es momentan anderst gelöst.
' _
Nicht registrierte Benutzung der Excel Code Jeanie 1.0
schleife:
For zeile = 7 To  _
Zeilen_Datei1
If altezeile > zeile And schleifenzähler = 1 Then
schleifenzähler = 0
zeile = altezeile
End If
Range("C" & zeile).Select
If Left(ActiveCell(), 4) = "3 x " Or Left(ActiveCell(), 4) = "8mm " Then
zeilenzähler = ActiveCell.Row
Feederb = Left(ActiveCell(), 4)
End If
If zeilenzähler > 0  _
And ActiveCell() = "2" Or ActiveCell() = "3" Then
If ActiveCell.Row - 2 < zeilenzähler Then
Rows(ActiveCell.Row).Select
Selection.Insert Shift:=xlToDown, CopyOrigin:=xlFormatFromLeftOrAbove
Zeilen_Datei1 = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count,  _
1).End(xlUp).Row, Rows.Count)
schleifenzähler = 1
altezeile = zeile
GoTo schleife
Else
zeilenzähler = ActiveCell.Row
End If
If ActiveCell() = & _
#34;3" Or Feederb = "8mm " And ActiveCell() = "2" Then zeilenzähler = 0
End If
If ActiveCell() =  _
34;2" Or ActiveCell() = "3" Then
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'Zeile nach rechts schieben
End If
Next zeile

Da ich ja gerne etwas lernen möchte, stelle ich mal Dateien dazu. Die Datei ReportD.xls in einen Ordner kopieren. Im Makro Übersicht_ASM wird dann nach dem Ordner gefragt in dem sich die Datei befindet.
Mir geht es dann hauptsächlich um den Bereich: ausrichten der Spalten in geöffneter Datei.
Wie kann ich den umstellen auf von unten nach oben ?
Denn ich denke meine Lösung ist nicht sehr gut ?
https://www.herber.de/bbs/user/81443.zip
Gruß Jürgen
Anzeige
AW: For Next Schleife - dynamisch ?
15.08.2012 20:07:20
Josef

Hallo Jürgen,
ich hab dir doch aufgezeigt wie es rückwärts geht.
Wo ist dein Problem?

« Gruß Sepp »

AW: For Next Schleife - dynamisch ?
15.08.2012 22:06:31
Jürgen
Hallo Sepp,
mein Problem besteht darin, das ich von oben nach unten jede Spalte nach einen Wert dursuche und dadurch weitere Aktionen folgen. Also ich wüßte nicht wie ich das bewerkstelligen könnte mit der Variante von unten nach oben. Aber ist ok, habe mir mit einer Sprunganweisung zum Start der For..Next geholfen. Dann wird Sie jedesmal nach einfügen einer Zeile neu gestartet. Danach setzte ich den Schleifenzähler auf den alten Wert vor der Goto Anweisung.
Danke Dir
Jürgen
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige