Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1564to1568
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

Gibts ne bessere Variante?

Gibts ne bessere Variante?
16.06.2017 08:48:27
Max2
Hallo Leute,
ich weiß das ist ein VBA Forum, allerdings ist
VB.NET + Office Library jetzt nicht ernsthaft anders vom Syntax.
Wenn eine VB.NET Frage hier unangebracht ist, entschuldige ich mich.
Hier Problem:
Ich hole mir aus einer Excel Datei die Letzte "beschriebene" Zelle.
Diese befindet sich irgendwo bei Zeile 3000+.
Die tatsächliche letzte Zelle, ist aber Zeile 6000.
Es befinden sich haufenweise SVerweis Geschichten in den Zellen und durch
bedingte Formatierung, werden diese Zellen schwarz oder weiß dargestellt.
Alle Zellen die schwarz sind, sind nicht ausgefüllt und haben somit einen #NV Error.
Da ich bei der Suche nach der letzten Zeile, nicht nach Zell-Farbe o.ä. suchen kann, suche ich einfach "#", was mir nicht wirklich gefällt, aber es funzt.
Habt ihr einen Denkanstoß für mich?
Hier die Funktion(oSheet ist eine private Worksheet-Variable):

Private Function get_LastRow() As Integer
Dim lastCell As Integer
With oSheet
lastCell = .Range("A" & .Rows.Count).End(XlDirection.xlUp).Row
Dim rng As Range = .Range("A1:A" & lastCell)
Dim found As Range = Nothing
found = rng.Find("#", LookIn:=XlFindLookIn.xlValues, LookAt:=XlLookAt.xlWhole,
SearchOrder:=XlSearchOrder.xlByRows,
SearchDirection:=XlSearchDirection.xlNext)
If Not IsNothing(found) Then lastCell = found.Row - 1
End With
If lastCell > 0 And Not lastCell.Equals(Nothing) Then Return lastCell
End Function

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gibts ne bessere Variante?
16.06.2017 08:59:31
ransi
Hallo,
Schau mal ob du dies angepasst bekommst:
Option Explicit

Sub machs()
    Dim letzteZelle As Range
    Dim Fehlerzellen As Range
    Set Fehlerzellen = Range("A:A").Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
    Set letzteZelle = Fehlerzellen.SpecialCells(xlCellTypeLastCell, xlErrors)
    MsgBox letzteZelle.Address
End Sub



ransi
Anzeige
AW: Gibts ne bessere Variante?
16.06.2017 09:05:04
ransi
HAllo,
Vergiss den letzten Post.
War Blödsinn.
Von wegen!
16.06.2017 09:30:30
Max2
Hallo,
das war er nicht im geringsten!
Der einzige Fehler war: ... = Fhelerzellen.Special...
Das muss dann einfach heißen: letzteZelle = Fehlerzellen.Row - 1
Vielen Dank für die Hilfe, hier die Lösung in VB.NET:
    Private Function get_LastRow_Test() As Integer
Dim lastCell As Integer
With oSheet
Dim errCell As Range = .Range("A:A").SpecialCells(XlCellType.xlCellTypeFormulas,  _
XlSpecialCellsValue.xlErrors)
lastCell = errCell.Row - 1
End With
Return lastCell
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige