Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wie letzte Zeile von usedRange ermitteln?

Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:05:45
usedRange
Guten Abend
Mit nachfolgendem identifiziere ich eine Spalte mit speziellen Begriffen, bei denen Leerzeichen überflüssig sind und daher entfernt werden sollen. Um mit Ersetzen zu arbeiten, definiere ich einen Range, der abzusuchen ist.
Der Range ist wie folgt definiert:
Set rngSpalte = Range(Cells(1, i), Cells(1000, i))
Nun möchte ich die Zahl 1000 ersetzen mit der Zahl, die sich ergibt, wenn abgefragt wird, welches die letzte Zeile von used range ist.
Doch wie stelle ich das an?
Danke für eine Rückmeldung.
Peter
Option Explicit

Sub ttt()
Dim i As Integer
Dim lngSpalte As Long
Dim rng As Range
Dim rngSpalte As Range
'Feststellen, ob in Spalten A-Z (1-26) 'T.' oder 'C.' vorkommt, wenn ja, wird die betreffende  _
Spaltennummer
'in die Variable lngSpalte geschrieben
For i = 1 To 26
If WorksheetFunction.CountIf(Range(Cells(1, i), Cells(65536, i)), "*T.*") + _
WorksheetFunction.CountIf(Range(Cells(1, i), Cells(65536, i)), "*C.*") > 0 Then  _
lngSpalte = i
Set rngSpalte = Range(Cells(1, i), Cells(1000, i))
'wenn der Variable lngSpalte eine Zahl zugewiesen wurde, werden in dieser Spalte die  _
unnötigen
'Leerschläge entfernt; die obige Schlaufe muss nicht weitergeführt werden (deshalb  _
Exit Sub)
If lngSpalte  0 Then
For Each rng In rngSpalte
rng = Replace(rng, " ", "")
Next
Exit Sub
Else
End If
Next i
End Sub


9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:17:00
usedRange
Hi,
du weißt, dass UsedRange ein recht unsicherer Kandidat ist?
ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
mfg Kurt

AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:21:00
usedRange
Hallo Kurt
Vielen Dank.
Gäbe es hier "sicherere Kandidaten"?
Gruss, Peter

AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:28:46
usedRange
HI
kommt darauf an.
wenn man sicher weiß daß eine bestimmte Spalte immer bis zur letzten Zeile beschrieben ist, könnte man auch das verwenden:

Set rngSpalte = Range(Cells(1, i), Cells(Cells(65536,xxx).end(xlup).row, i))


das ist recht sicher und lässt sich auch nicht durch einfügen oder Löschen von Zeilen durcheinanderbringen (was bei UsedRange manchmal passiert, insbesondere beim Löschen von Inhalten kann es sein, daß sie sich nicht anpasst und grösser ist, als der tatsächlich genutze bereich)
Du musst halt wissen, in welcher Spalte (hier xxx) du suchen musst.
Gruß, Daniel

Anzeige
AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:21:00
usedRange
HI
das könnte so funktionieren:

Set rngSpalte = Range(Cells(1, i), Cells(activesheet.usedrange.rows.count, i))


oder so:


Set rngSpalte = Cells(1, i).resize(activesheet.usedrange.rows.count,1)


das funktioniert allerdings nur unter der Voraussetzung, das mindestens eine Zelle der Zeile 1 beschrieben ist.
ist dies nicht der Fall, beginnt auch die UsedRange erst später und UsedRange.Rows.Count liefert einen falschen Wert (nämlich die Anzahl der Zeilen und nicht die Zeilen-Nr der Letzten Zeile.)
das könnte man aber abfangen, indem man den Ausdruck so erweitert:


Activesheet.Usedrange.Rows.Count + Activesheet.Usedrange.Row - 1


Aber wie gesagt, wenn sichergestellt ist, daß die erste Zeile beschrieben ist, ist dieser zusatz nicht erforderlich.
Gruß, Daniel

Anzeige
AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:47:00
usedRange
Hallo Daniel
Vielen Dank für die Erläuterungen
Peter

AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:23:00
usedRange
Hallo Peter,
Sub Leerzeichen()
Dim i As Integer
Dim rng As Range

With Application
    For i = 1 To 26
        If .CountIf(Rows(i), "*T.*") + .CountIf(Rows(i), "*C.*") > 0 Then
            Set rng = Range(Cells(1, i), Cells(Cells(Rows.Count, i).End(xlUp).Row, i))
            Exit For
        End If
    Next
End With

If Not rng Is Nothing Then rng.Replace What:=" ", Replacement:="", LookAt:=xlPart

End Sub


Gruß Sepp



Anzeige
AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 21:57:08
usedRange
Hallo Josef
Vielen Dank für deine Hilfe
Es scheint, dass irgendetwas noch nicht funktioniert. Ich habe eine Testdatei (mit deinem Makro drin) hochgeladen.
Könntest du mir nochmals helfen?
Danke, Peter
https://www.herber.de/bbs/user/50215.xls

AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 22:06:00
usedRange
Hallo Peter,
mein Fehler, es mucc .Columns statt .Rows lauten.
Sub Leerzeichen()
Dim i As Integer
Dim rng As Range

With Application
    For i = 1 To 26
        If .CountIf(Columns(i), "*T.*") + .CountIf(Columns(i), "*C.*") > 0 Then
            Set rng = Range(Cells(1, i), Cells(Cells(Rows.Count, i).End(xlUp).Row, i))
            Exit For
        End If
    Next
End With

If Not rng Is Nothing Then rng.Replace What:=" ", Replacement:="", LookAt:=xlPart

End Sub


Gruß Sepp



Anzeige
AW: Wie letzte Zeile von usedRange ermitteln?
26.02.2008 22:09:54
usedRange
Hallo Sepp
Vielen, vielen Dank!
Peter

74 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige