Office - Word, Excel und Co. 9.731 Themen, 41.312 Beiträge

Excel: Letzte Eintragung in Zeile automatisch zentrieren.

minbari / 11 Antworten / Baumansicht Nickles

Moin,

Folge-Thread.

Ich habe eine Exceltabelle, in welche mittels Userform Daten eingetragen werden sollen.

Mittlerweile funktioniert alles einwandfrei. Jetzt möchte ich noch, dass die letzte Eintragung
automatisch zentriert wird.
Ich schätze, dass es eine Liste mit ca 3000-4000 Eintragungen wird. Da neue Eintragungen unten eingefügt werden, würde ich es sehr mühsam finden, zum Überprüfen 30 Seiten nach unten zu scrollen.

Habt Ihr eine Idee?

Großes Dankeschön!!

minbari

bei Antwort benachrichtigen
mawe2 minbari „Excel: Letzte Eintragung in Zeile automatisch zentrieren.“
Optionen
Jetzt möchte ich noch, dass die letzte Eintragung automatisch zentriert wird.

Bitte beschreibe Dein Vorhaben etwas genauer:

Jede Zeile, die Du mit dem UserForm und dem dazugehörigen VBA-Code in die Tabelle schreibst, ist doch sowieso in dem jeweiligen Moment die immer letzte Eintragung.

Was willst Du da zentrieren? Die Zellinhalte innerhalb der Zelle? Horizontal oder vertikal?

Zum schnellen Springen in einer längeren Excel-Liste kannst Du die Tastenkombination

<Strg> + <Pfeiltaste>

verwenden.

Also zum Springen an das Ende der Liste z.B. <Strg> + <Pfeil nach unten>.

bei Antwort benachrichtigen
minbari mawe2 „Bitte beschreibe Dein Vorhaben etwas genauer: Jede Zeile, die Du mit dem UserForm und dem dazugehörigen VBA-Code in die ...“
Optionen

Ja, im Grunde ist es genau das.

Ich möchte, dass die Tabelle dann automatisch zum letzten eintrag springt.

Wie bei <Strg> + <Pfeil nach unten>

bei Antwort benachrichtigen
Edgar Rau minbari „Excel: Letzte Eintragung in Zeile automatisch zentrieren.“
Optionen

Wenn  die Eintragungen in Spalte "A" sind folgender VBA-Code:

Sub Makro()
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.HorizontalAlignment = xlCenter
   End Sub

Ich hoffe, ich konnte helfen.

Gruß Edgar

bei Antwort benachrichtigen
minbari Edgar Rau „Wenn die Eintragungen in Spalte A sind folgender VBA-Code: Sub Makro Range A1 .Select Selection.End xlDown .Select ...“
Optionen

Das funktioniert nicht.

Ich habe den Code in den Code der Userform eingefügt - nichts.

Habe den Code auf ("B6") geändert.

Trotzdem Danke!!!!

bei Antwort benachrichtigen
Edgar Rau minbari „Das funktioniert nicht. Ich habe den Code in den Code der Userform eingefügt - nichts. Habe den Code auf B6 geändert. ...“
Optionen
Range("A1").Select

Es wird die Zelle A1 selektiert.

Selection.End(xlDown).Select

Die letzte beschriebene Zelle in Spalte A wird selektiert.

Selection.HorizontalAlignment = xlCenter

Die letzte beschriebene Zelle in Spalte A wird horizontal ausgerichtet.

Bei Dir müsste es "Range("B6").Select" heißen.

Es dürfen allerdings zwischen "B6" und dem Ende keine Leerzellen enthalten sein.

Das funktioniert nicht.

Das ist mir ein Rätsel!

bei Antwort benachrichtigen
mawe2 Edgar Rau „Es wird die Zelle A1 selektiert. Die letzte beschriebene Zelle in Spalte A wird selektiert. Die letzte beschriebene Zelle ...“
Optionen
Das ist mir ein Rätsel!

Das, was Dein Script macht, ist gar nicht das Ziel.

Weil ich aus dem Startposting auch nicht ganz schlau geworden bin, habe ich nachgfragt, wie das mit dem "zentrieren" eigentlich gemeint ist.

Und genau so, wie Du es verstanden hattest, war es eben nicht gemeint.

Und für das, was der TS tatsächlich möchte, funktioniert Dein Code eben nicht.

bei Antwort benachrichtigen
Edgar Rau mawe2 „Das, was Dein Script macht, ist gar nicht das Ziel. Weil ich aus dem Startposting auch nicht ganz schlau geworden bin, ...“
Optionen

Hallo mawe2,

vielen Dank für die Erklärung. Dann habe ich es tatsächlich falsch verstanden. Ich dachte, er wollte den Text in der letzten Zelle horizontal zentrieren. Naja, Nachfragen ist immer besserZwinkernd

bei Antwort benachrichtigen
minbari Nachtrag zu: „Excel: Letzte Eintragung in Zeile automatisch zentrieren.“
Optionen

Hier nochmal der Code der Userform:

Private Sub Abbrechen_Button_Click()

' Eingabefenster schließen

Unload Eingabemaske

End Sub


Private Sub Eintragen_Button_Click()

' Eingaben der Maske in das Fahrtenbuch übernehmen

Dim StartZeile&
Dim Ws As Worksheet
Set Ws = ActiveSheet
StartZeile = Ws.Cells(65536, 2).End(xlUp).Row + 1
Ws.Cells(StartZeile, 2) = CDate(Text_Datum.Text)
Ws.Cells(StartZeile, 3) = Zweck
Ws.Cells(StartZeile, 4) = Fahrzeug
Ws.Cells(StartZeile, 5) = Begleitung
Ws.Cells(StartZeile, 6) = Bemerkung

' Rahmen um die neu eingefügten Zellen erstellen

 Dim i As Integer
For i = 2 To 6
Ws.Cells(StartZeile, i).Borders(xlEdgeLeft).LineStyle = xlContinuous
Ws.Cells(StartZeile, i).Borders(xlEdgeTop).LineStyle = xlContinuous
Ws.Cells(StartZeile, i).Borders(xlEdgeBottom).LineStyle = xlContinuous
Ws.Cells(StartZeile, i).Borders(xlEdgeRight).LineStyle = xlContinuous
Next i

' nach Datum sortieren

Range("B6:F3300").Sort Key1:=Range("B7")

' Eingabemaske schließen

Unload Eingabemaske

End Sub




Private Sub UserForm_Initialize()

'Automatischer Eintrag Datum

Eingabemaske.Text_Datum.Value = Date

'Dropdownmenü Begleitung

Eingabemaske.Begleitung.RowSource = "Daten!$A$2:$A$8"

'Dropdownmenü Fahrzeug

Eingabemaske.Fahrzeug.RowSource = "Daten!$C$2:$C$15"

'Dropdownmenü Bemerkung

Eingabemaske.Bemerkung.RowSource = "Daten!$E$2:$E$9"

'Dropdownmenü Zweck der Fahrt

Eingabemaske.Zweck.RowSource = "Daten!$G$2:$G$32"


End Sub

Private Sub UserForm_Activate()
  Me.Left = 350
  Me.Top = 350
End Sub




bei Antwort benachrichtigen
hddiesel minbari „Hier nochmal der Code der Userform: Private Sub Abbrechen_Button_Click Eingabefenster schließen Unload Eingabemaske End ...“
Optionen

Wenn keiner einen brauchbaren Vorschlag hat, dann folgende Infos.

Rows.Count, ist die letzte mögliche Zeile.

(Zeile 65536 in den älteren Excel- Versionen)

und
(Zeile 1048597 in den neuen Excel- Versionen)
___________________________________________________________________

' Zur absoluten letztmöglichen Zeile der Exceltabelle, dann so:
ActiveWindow.ScrollRow = ActiveSheet.Rows.Count

' Zur letzten belegten Zeile scrollen,
in welcher die Zelle in der Spalte B > 0 ist, dann so:
ActiveWindow.ScrollRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row

' Wenn du die letzten 3 Zeilen sehen möchtest, dann:
ActiveWindow.ScrollRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row - 3

Den Code auf dein Makro anpassen
___________________________________________________________________

Deinen Code im Makro:
StartZeile = Ws.Cells(65536, 2).End(xlUp).Row + 1

würde ich in folgendes ändern,
dann musst du deine Makros, nicht auf neuere Excel- Versionen anpassen:

' Die leere Zeile, nach der letzten Datenzeile,
in welcher die Zelle in der Spalte B > 0 ist.
StartZeile = Ws.Cells(Rows.Count, 2).End(xlUp).Row + 1
___________________________________________________________________

z.B. die UserForm zentrieren:
    ' Eine horizontale Zentrierung
    Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2

    ' (Eine vertikale Zentrierung) + 30 weiter nach unten
    Me.Top = (Application.Top + Application.Height / 2 - Me.Height / 2) + 30

Gruss Karl, BS: Windows 10 Pro, Office Pro. Plus 2016_32-Bit. Motto: Leben und leben lassen!
bei Antwort benachrichtigen
minbari hddiesel „Wenn keiner einen brauchbaren Vorschlag hat, dann folgende Infos. Rows.Count, ist die letzte mögliche Zeile. Zeile 65536 ...“
Optionen
ActiveWindow.ScrollRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row - 3

Das war die Lösung!!

Vielen, vielen Dank!!!!!

bei Antwort benachrichtigen
hddiesel minbari „Das war die Lösung!! Vielen, vielen Dank!!!!!“
Optionen

Hallo minbari,

Danke für deine Rückmeldung.

Gruss Karl, BS: Windows 10 Pro, Office Pro. Plus 2016_32-Bit. Motto: Leben und leben lassen!
bei Antwort benachrichtigen