Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Letzte Zelle mit Zeichen in Bereich
#1
Hallo,

kann jemand bei folgendem Problem helfen?
In einem Bereich z.B. B10:Z20 werden Buchstaben und Zahlen eingetragen.
Einzelne Zellen können auch leer bleiben.
Nun möchte ich per Makro zur letzten Zelle mit einem Inhalt in diesem Bereich springen.
Das mache ich bisher so, funktioniert aber nicht exakt:
Code:
Sub letzteZelle()
    Range("B10:Z20").Find(what:="?*", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious).Select
End Sub
Fallbeispiel: Wenn der letzte Inhalt in V16 steht und der vorletzte in S20 wird S20 markiert und nicht V16.
Es wird scheinbar immer die letzte unterste Zelle mit Inhalt im Bereich gefunden.
Was müßte im Code geändert werden?
Gruß anne
Antworten Top
#2
Hallo!
Der zusätzliche Parameter SearchOrder:=xlByColumns sollte helfen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Hallo return,


meinst Du das hier?:

Code:
Sub letzteZelle()
   Range("B10:Z20").SpecialCells(xlCellTypeLastCell).Select
End Sub
Gruß Carsten

Edit:
Ne, Du willst die letzte gefüllte Zelle im Bereich. Nimm Ralfs Vorschlag. :)
Antworten Top
#4
(06.08.2015, 12:14)RPP63 schrieb: Der zusätzliche Parameter SearchOrder:=xlByColumns sollte helfen.
Super, der Parameter passt.
Allerdings bekomme ich eine Fehlermeldung, wenn der Bereich leer ist.
Laufzeitfehler '91':
Objektvariable oder With-Blockvariable nicht festgelegt
Habe das mit on error umgangen. Oder macht man es besser anders?
Das Makro ist einfach einer Form zuwiesen.



Bem.: Carstens Vorschlag funktioniert garnicht ??
Zitat:meinst Du das hier?:
Sub letzteZelle()
   Range("B10:Z20").SpecialCells(xlCellTypeLastCell).Select
End Sub
Gruß Carsten
Gruß anne
Antworten Top
#5
Hallo Anne,

mein Beispiel funktionierte schon, nur eben nicht wie von Dir gewünscht.
Es sucht die letzte Zelle in der  Range auf.


Zu Deinem Problem mit dem Laufzeitfehler könnte es auch folgende Lösung geben:
Code:
Sub letzteZelle()
On Error GoTo Er
   If Not Range("B10:Z20").Find(what:="?*", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious, SearchOrder:=xlByColumns) Is Nothing Then
       Range("B10:Z20").Find(what:="?*", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious, SearchOrder:=xlByColumns).Select
   Else
       Range("B10").Select
   End If
Ex:
   Exit Sub
Er:
    MsgBox "FehlerNr:" & Err.Number & vbCrLf & Err.Description
   Resume Ex
End Sub


Gruß Carsten
Antworten Top
#6
Hallo Anne!
On Error sollte man nur bei unerwarteten Fehlern nutzen.
Dies ist hier nicht der Fall.
Eine Möglichkeit ist, eine Range-Variable (hier die Fundstelle) auf Nothing zu prüfen:

Code:
Sub letzteZelle()
Dim LZ As Range
Set LZ = Range("B10:Z20").Find(What:="?*", LookIn:=xlValues, _
  LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
If Not LZ Is Nothing Then Application.Goto LZ
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
(06.08.2015, 14:33)RPP63 schrieb: On Error sollte man nur bei unerwarteten Fehlern nutzen.
Dies ist hier nicht der Fall. Eine Möglichkeit ist, eine Range-Variable (hier die Fundstelle) auf Nothing zu prüfen:
Code:
Sub letzteZelle()
Dim LZ As Range
Set LZ = Range("B10:Z20").Find(What:="?*", LookIn:=xlValues, _
  LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
If Not LZ Is Nothing Then Application.Goto LZ
End Sub
Hallo Carsten und Ralf,

beide Codes laufen tadellos. Habe mich auf Grund der Erklärung für Ralfs Vorschlag entschieden.
Vielen Dank für Eure Beiträge.

@Carsten:
Hatte Deinen 1. Code in zwei Mappen ausprobiert. In der ersten wurde die Zelle A1 selektiert und
in der zweiten AH20. Daraus konnte ich mir keinen Reim machen. Aber jetzt ist ja ok.
Gruß anne
Antworten Top
#8
Hallo Anne,

(06.08.2015, 16:42)anne schrieb: @Carsten:
Hatte Deinen 1. Code in zwei Mappen ausprobiert. In der ersten wurde die Zelle A1 selektiert und
in der zweiten AH20. Daraus konnte ich mir keinen Reim machen. Aber jetzt ist ja ok

Range("B10:Z20").SpecialCells(xlCellTypeLastCell).Select

findet auch eine Zelle, deren Inhalt Du in der Sitzung / nach dem letzten Speichern gelöscht hast.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
(08.08.2015, 04:44)schauan schrieb: Hallo Anne,


Range("B10:Z20").SpecialCells(xlCellTypeLastCell).Select

findet auch eine Zelle, deren Inhalt Du in der Sitzung / nach dem letzten Speichern gelöscht hast.

Hallo André,

habe gerade mal ein bisschen damit rumgespielt. Erstaunlich, es werden ja auch nur Formatierungen gefunden.
Formatierungen haben aber scheinbar eine höhere Priorität wie Dateneinträge.
Gruß anne
Antworten Top
#10
Hallo Anne,
Das ist eben das Unsichere an dem Code. Ging es bei den Formatierungen eventuell um benutzerdefinerte? Da gibt's auch noch Unterschiede. Wenn Du z.B. Das ganze Blatt markierst und eine normale Formatierung nimmst - beispielsweise Zellrahmen, findet es glücklicherweise nicht das ganze Blatt bzw die allerletzte Zelle rechts unten.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste