Bereichsnamen mit lastRow, last column
09.10.2016 16:01:54
Gerhard
mit diesen Funktionen (von Christian, 2009) soll der Bereichsname "gelb_1" in der Schreibweise
With wks... .Range(.Cells.....).Name = "gelb_1"erzeugt werden.
Wie muss die VBA-Zeile dazu geschrieben werden?
Die Umsetzung der Funktionen in VBA gelingt mir nicht.
Danke für die Hilfe
Gerhard
Meine Beispiel-Datei: https://www.herber.de/bbs/user/108679.xlsm
Function LastRow(wks As Worksheet) As Long
Dim lngFirst As Long, lngLast As Long, lngTmp As Long
With Application
If .CountA(wks.Cells) = 0 Then Exit Function
If .CountA(wks.Rows(wks.Rows.Count)) Then
LastRow = wks.Rows.Count: Exit Function
End If
lngLast = wks.Rows.Count
Do While lngLast > lngFirst + 1
lngTmp = (lngFirst + lngLast) \ 2
If .CountA(wks.Rows(lngTmp).Resize(lngLast - lngTmp)) Then _
lngFirst = lngTmp Else lngLast = lngTmp
Loop
If .CountA(wks.Rows(lngLast)) Then LastRow = lngLast Else LastRow = lngFirst
End With
End Function
Function LastCol(wks As Worksheet) As Long
Dim lngFirst As Long, lngLast As Long, lngTmp As Long
With Application
If .CountA(wks.Cells) = 0 Then Exit Function
If .CountA(wks.Columns(wks.Columns.Count)) Then
LastCol = wks.Columns.Count: Exit Function
End If
lngLast = wks.Columns.Count
Do While lngLast > lngFirst + 1
lngTmp = (lngFirst + lngLast) \ 2
If .CountA(wks.Columns(lngTmp).Resize(, lngLast - lngTmp)) Then _
lngFirst = lngTmp Else lngLast = lngTmp
Loop
If .CountA(wks.Columns(lngLast)) Then LastCol = lngLast Else LastCol = lngFirst
End With
End Function