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

Was wenn ein definierter Rangebereich sich ändert?

Was wenn ein definierter Rangebereich sich ändert?
Holger
Schon wieder Hallo,
mein Makro wächst und gedeiht, jedoch stosse ich hier auf ein Problem.
Ich definiere einen Rangebereich, diesen durchschleife ich.
Nun werden manchmal neue Zeilen eingefügt, der Rangebereich würde sich dadurch
ändern, wird aber innerhalb der Schleife natürliich nicht upgedatet.
Das bedeutet, durch das Einfügen von Zeilen bin ich irgendwann am Ende des
ursprünglichen Rangebereiches obwohl dieser tatsächlich ja größer geworden ist.
Wie kann man das denn nur lösen?
Sub Wärezuschön gewesen
Cells(Rows.Count, 1).End(xlUp).Select
intLastTranslation = ActiveCell.Row
Set rngTranslationBereich = cpwTranslationWS.Range("A20:A" & intLastTranslation)
For Each rngTranslationCell In rngTranslationBereich
strTemp = rngTranslationCell.Offset(0, 3).Value
intZkomma = InStr(strTemp, strDeli)
If intZkomma  0 Then
intZkomma = 0
intTemp = Split(strTemp, strDeli)
For lngZeile = 0 To UBound(intTemp)
rngTranslationCell.Offset(1, 0).EntireRow.Insert
Range(rngTranslationCell, rngTranslationCell.Offset(0, 2)).Copy  _
rngTranslationCell.Offset(1, 0)
rngTranslationCell.Offset(1, 3).Value = intTemp(lngZeile)
intZkomma = intZkomma + 1
Next lngZeile
intZkomma = 0
rngTranslationCell.EntireRow.Delete
End If
Next rngTranslationCell
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Was wenn ein definierter Rangebereich sich ändert?
25.08.2010 13:38:44
Hajo_Zi
Hallo Holger,
gebe dem Bereich einen Namen.

Nomen est Omen - Hä?
25.08.2010 13:47:03
Holger
Hallo Hajo,
du sprichst in Rätseln ;), wie einen Namen geben?
Der Bereich hat doch einen Namen:
Set rngTranslationBereich = cpwTranslationWS.Range("A20:A" & intLastTranslation)
Nun werden in der Schleife Zeilen eingefügt sowie auch gelöscht, wie kann also
der Bereich angepasst werden oder geht das nicht?
AW: Namen geben
25.08.2010 13:49:52
Hajo_Zi
Halo Holger,
wie Du richtig schreibst "Range("A20:A" & intLastTranslation)" sprichts Du den Bereich Direkt an und hast in der Tabelle dem Bereich keinen Namen gegeben. Register Namen, Namensmanager.
Gruß Hajo
Anzeige
AW: Namen geben
25.08.2010 14:12:31
Holger
Hallo Hajo,
Sorry, aber ich kapiere echt nicht um was es geht.
Den Range erzeuge ich doch im Makro immer wieder neu (da die Datei immer wieder neu)
und ich finde kein Register Namen und wenn was würde es mir im Makro nutzen!?
einfach neu definieren
25.08.2010 14:04:13
Rudi
Hallo,
Sub Wärezuschön_gewesen()
Dim rngTranslationBereich As Range, intTemp
Cells(Rows.Count, 1).End(xlUp).Select
intLastTranslation = ActiveCell.Row
Set rngTranslationBereich = cpwTranslationWS.Range("A20:A" & intLastTranslation)
For Each rngTranslationCell In rngTranslationBereich
strTemp = rngTranslationCell.Offset(0, 3).Value
intZkomma = InStr(strTemp, strDeli)
If intZkomma  0 Then
intZkomma = 0
intTemp = Split(strTemp, strDeli)
For lngZeile = 0 To UBound(intTemp)
rngTranslationCell.Offset(1, 0).EntireRow.Insert
Range(rngTranslationCell, rngTranslationCell.Offset(0, 2)).Copy _
rngTranslationCell.Offset(1, 0)
rngTranslationCell.Offset(1, 3).Value = intTemp(lngZeile)
intZkomma = intZkomma + 1
Next lngZeile
intZkomma = 0
rngTranslationCell.EntireRow.Delete
Set rngTranslationBereich = _
rngTranslationBereich.Resize(rngTranslationBereich.Rows.Count + UBound(intTemp)) _
b>
End If
Next rngTranslationCell
End Sub

Anzeige
AW: einfach neu definieren
25.08.2010 14:14:30
Holger
Hallo Rudi,
und das klappt?
Da ist aber nicht berücksichtigt, dass ja auch immer eine Zeile gelöscht wird!?
Geht auch nicht!
25.08.2010 14:24:33
Holger
Hallo Rudi,
zum Verzweifeln, denn auch mit deiner neuen Codezeile ändert sich der Bereich innerhalb der Schleife nicht. Wenn ich im Einzelschritt nach der Codezeile mir ansehen wo er ist, ist er eben weiterhin in Zeile 22 anstatt 23. Ist aber eigentlich auch logisch, wenn ich es mir so recht überlege, ich glaube da gibt es keine Lösung für mein Problem.
Rudi, you made my day!
25.08.2010 14:28:03
Holger
Hey Rudi,
es scheint doch zu klappen! Er wird zwar Zeilen nochmal durchgehen, die er schon mal hatte, aber er geht bis zur letzten Zeile. Also scheint es zu funktionieren. Danke Dir!
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige