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.

Funktionsaufruf in Sub
#1
Code:
Public 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

Hallo!
Ich würde gern in einem Sub die oben angegebene Funktion öffnen, um die letzte beschriebene Zeile in der Tabelle zu finden.
Dazu müsste die Funktion die Nummer der letzten beschriebenen Zeile zurückgeben und die Funktion müsste aufgerufen werden.
Leider bekomme ich bei folgendem Code im Sub eine Fehlermeldung:
Code:
Public Sub CommandButton1_Click()

Dim LRow As Long

   
   LRow = LastRow()
   
   Tabelle1.Cells(LastRow, 3) = TextBox1.Text
   Tabelle1.Cells(LastRow, 8) = TextBox2.Text
   
   
End Sub
Antworten Top
#2
Hi,

Deine Funktion erwartet immer einen Parameter, den gibst Du aber nicht mit.

Einmal googeln bringt das:

http://www.excel-inside.de/vba-loesungen...-ermitteln
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Richtig, aber welchen Parameter erwartet die Funktion? Das konnte ich aus dem Kopf nicht ablesen.

Die anderen Lösungen, um die letzte Zeile zu ermitteln habe ich bereits getestet. Leider finden diese immer das zuletzt veränderte Feld, also auch Formatänderungen, welches für meine Anwendung die falschen Ergebnisse liefert.
Antworten Top
#4
Hallo Heinz,

die Funktion erwartet ein Worksheet. Das steht doch im Parameter der Funktion drin.

Code:
Public Function LastRow(wks As Worksheet) As Long

Die Übergabe geht so

Code:
Public Sub CommandButton1_Click()

Dim LRow As Long

  
   LRow = LastRow(Tabelle1)
  
   Tabelle1.Cells(LastRow, 3) = TextBox1.Text
   Tabelle1.Cells(LastRow, 8) = TextBox2.Text
  
  
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Heinz
Antworten Top


Gehe zu:


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