Office - Word, Excel und Co. 9.744 Themen, 41.408 Beiträge

Excel: Mittels Userform (VBA) Daten in eine Tabelle einfügen (mit Rahmen)

minbari / 33 Antworten / Flachansicht Nickles

Moin,

ich bin gerade dabei, eine Excel-Tabelle zu erstellen.
Mittels einer Eingabemaske (Userform) werden die Daten in eine Tabelle eingefügt.

Ich habe soweit alles fertig. Das Einzige, was noch nicht funktioniert ist, dass die eingetragenen Daten in eine Zelle mit Rahmen eingefügt werden.

Es geht hier speziell um den Rahmen!

Folgenden Code verwende ich:

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

' 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

Ich benutze Excel 2016.


Betreffen würde es B6:F6, wobei dies natürlich veränderlich ist, da immer neue Einträge eine Zeile tiefer ansetzen.

Habt Ihr eine Idee?

Danke für die Hilfe!

minbari

bei Antwort benachrichtigen
Borlander mawe2 „Egal, ob das 4000 Zeilen sind oder 40000: Die Rahmen setzt man einmal und dann war s das. Wenn es definitiv per VBA ...“
Optionen
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

Ist zwar schon ewig her, dass ich mal VBA programmiert habe, aber ich würde eher mit einer Range arbeiten, statt alle Zellen einzeln zu formatieren. Das ist im Zweifelsfall auch deutlich schneller.

Oder spricht da irgendwas technisches dagegen?

bei Antwort benachrichtigen