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

Tabellenformatvorlagen

Tabellenformatvorlagen
18.08.2017 09:02:43
EasyD
Hallo zusammen,
ich habe eine Tabelle mit ca 7000 Zeilen und 20 Spalten, recht viel Daten also.
Diese Tabelle habe ich mittels einer Tabellenformatvorlage erstellt. Dies aus 2 Gründen:
Erstens wegen des Formates und der Übersichtlichkeit.
Zweitens weil die Tabelle eine Menge Formeln enthält und stetig erweitert wird. Eintragungen werden dabei nur in einigen Spalten gemacht, die meisten Spalten sind aufgrund von enthaltenen Formeln selbst ausfüllend.
Darüber hinaus habe ich in der Tabelle diverse Makro's laufen.
Die Frage:
Wie kann ich das Format der Tabelle spezieller an meine Bedürfnisse anpassen?
Ich weiß, im Register Entwurf kann man andere Vorlagen auswählen oder auch eine selbst erstellte Vorlage in gewissen Grenzen anpassen (bspw Ergebniszeile, erste Zeile, erste Spalte usw). Ich möchte aber bspw eine Spalte mitten in der Tabelle abweichend von den anderen formatieren und für den Benutzer hervorheben. Genauer gesagt will ich die Spalten, in denen Eintragungen vorgenommen werden sollen einfärben, alle anderen Spalten sollen das Format der Vorlage behalten, damit klar ist dass diese Spalten die Formeln enthalten und nicht geändert werden dürfen.
Geht das?
Und um das Ganze noch zu erweitern:
Eines der Makro's in der Tabelle fügt eine Zeile mitten in der Tabelle ein (es wird in der ersten Spalte ein Wert gesucht und wenn gefunden eine Zeile unterhalb eine komplette Zeile eingefügt). Bei diesem Vorgang allerdings stimmt das Format der Tabelle überhaupt nicht mehr. Aus Datumsformaten macht er mir bspw benutzerdefinierte Zahlenformate. Ursache unklar.
Ich spare mir jetzt erstmal den Code für dieses Makro, denn ich denke nicht dass das Makro die Ursache für diese "Formatunglück" ist (Wenn nötig schiebe ich den Code natürlich hinterher). Das Makro kopiert nur die Zeile mit dem Suchergebnis in Spalte 1 und fügt diese unterhalb ein.
Ich vermute den Fehler eher in der Tabellenformatvorlage. Ideen?
Danke!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenformatvorlagen
18.08.2017 14:41:09
Michael
Hallo einfaches D,
Wie kann ich das Format der Tabelle spezieller an meine Bedürfnisse anpassen?
Ich möchte aber bspw eine Spalte mitten in der Tabelle abweichend von den anderen formatieren
Wenn Du das passende Tabellenformat auf Deinen Datenbereich angewandt hast, hindert Dich nichts daran, die entsprechenden Spalten der der Datentabelle zu markieren und anders zu färben, das so gesetzte Format wird auch entsprechend weitergeführt, wenn sich die Datentabelle erweitert. Um eine Spalte einer Datentabelle auszuwählen, musst Du mit dem Cursor nur über dem oberen Rand der jeweiligen Überschrift "schweben", bis der Cursor zu einem kleinen, schwarzen, nach unten zeigenden Pfeil wird - Klick mit der linken Maustaste und voila, der Spaltenbereich (=alle Datensätze ohne Überschrift) ist ausgewählt.
Ich spare mir jetzt erstmal den Code für dieses Makro, denn ich denke nicht dass das Makro die Ursache für diese "Formatunglück" ist
Ich vermute den Fehler eher in der Tabellenformatvorlage
Der Fehler könnte aber auch in der Methode vermutet werden, die im Makro zum Einsatz kommt, um die neue Zeile einzufügen. Denn eine Datentabelle (=formatierte Tabelle, in VBA "ListObject") ist etwas anderes als ein regulärer Tabellenblatt-Bereich und bietet für das Ergänzen von Zeilen auch eigene Methoden an. Insofern wäre wohl der Code durchaus hilfreich.
LG
Michael
Anzeige
AW: Tabellenformatvorlagen
20.08.2017 12:47:10
EasyD
Hey Michael
erstmal sorry - ich habe 2 Tage keine Zeit gehabt mich weiter um dieses Problemchen zu kümmern.
Aber um auf deine Antwort zurück zu kommen:
erstes Problem - die Spaltenformatierung:
Natürlich kann ich eine Spalte markieren und diese Spalte dann so formatieren wie ich das gerne möchte. Die Sache mit dem Einfärben funktioniert auch tatsächlich, so viel habe ich auch schon fest gestellt. Was aber NICHT funktioniert und wofür ich auch keinen Grund sehen kann ist, dass er mir das Datumsformat in der einen Spalte zerhackt wenn ich Zeilen einfüge. Ich konnte mittlerweise soviel heraus finden, dass er mir seltsamerweise eine US-amerkinisches Datum dort draus macht (das habe ich nicht gleich erkannt).
Wegen des Codes - und aufgrund deiner Ausführungen komme ich jetzt auch immer mehr zu dem Schluss, dass es wohl doch daran liegt - das ganze ist natürlich leider eine vertrauliche Sache. Ich werde aber mal schauen, ob ich das Ding etwas anonymisieren kann. Sobald ich da was habe, poste ich den Code auch gerne. Evtl wird ja dann klar, ob wirklich das Makro die Ursache allen Übels ist.
Und jetzt erweitere ich das ganze nochmal:
Ich habe mittlerweile auch festgestellt, dass ich in dieser Tabelle Werte nur noch von unten nach oben kopieren und einfügen kann. Auch wieder ein Indiz dafür dass ich mir mit dem Makro irgendwas kaputt mache. Nochmal etwas genauer: Ich kann einen Werte nicht von Zelle A5 in die Zelle A6 kopieren, sondern nur von A6 in A5.... habe ich noch nie gesehen sowas...
Ich schaue mal ob ich Montag noch etwas präzieser werden kann...
Beste Grüße
Anzeige
AW: Tabellenformatvorlagen
21.08.2017 15:12:35
EasyD
Hey Michael
ich hab mal den Code raus kopiert. Folgendes noch zur Info:
Ich habe eine "Userform_Deb" gebaut mit einer Textbox zur Eingabe der gesuchten Nummer und mit dem "CommandButton_Best"
Druck auf den Button löst das Makro aus. Den Code habe ich in die Userform geschrieben.
Zuerst wird in Spalte A eine Debitorennummer gesucht und beim ersten Suchergebnis (Nummer kommt durchaus auch mehrfach vor) wird die Zeile unten drunter eingefügt.
(Eine zweite Textbox auf der Userform ist für Fälle, in denen die Nummer in der Liste noch nicht enthalten ist. Dann läuft ein anderes Makro, ist hier nicht das Thema. Der Code läuft ganz ähnlich aber mit denm Unterschied, dass unter die letzte Zeile eingefügt wird und nicht erst eine Nummer in Spalte A gesucht wird.)
Private Sub CommandButton_Best_Click()
Application.ScreenUpdating = False
Dim WkSh    As Worksheet
Dim rZelle  As Range
'Wert aus Textbox in Spalte A suchen und auswählen
Set WkSh = ThisWorkbook.Worksheets("WKB")
If Len(TextBox_DebBest)  7 Then 'Abfangen von Falscheingaben in der Textbox
MsgBox "Die Debitorennummer muss 7-stellig sein", vbOKOnly, "Fehler!"
TextBox_DebBest.SetFocus
Else
If TextBox_DebBest.Value  "" Then
With WkSh.Columns(1)
Set rZelle = .Find(TextBox_DebBest.Value, LookAt:=xlWhole, LookIn:=xlValues) 'Zelle  _
mit Suchergebnis
If Not rZelle Is Nothing Then
rZelle.Activate
Zeile = ActiveCell.Row + 1 'Suchergebnis + 1 Zeile
Rows(Zeile & ":" & Zeile).Insert Shift:=xlDown
Cells(rZelle.Row + 1, 1) = rZelle.Value
Cells(rZelle.Row + 1, 20) = Cells(rZelle.Row, 20).Value
Cells(rZelle.Row + 1, 2).Activate
Unload UserForm_Deb 'Userform zu machen
Else
MsgBox "Unter der Debitorennummer  """ & TextBox_DebBest.Value & _
"""  wurde nichts gefunden." & vbNewLine & _
"Für das Einfügen einer Zeile für eine neue Nummer bitte das andere Eingabefeld  _
benutzen!", _
48, "Diese Nummer exisitiert nicht!"
TextBox_DebBest.SetFocus 'wieder zurück in die Textbox
End If
End With
Else
MsgBox "Sie müssen eine Debitorennummer eingeben - danke."
TextBox_DebBest.SetFocus 'wieder zurück in die Textbox
End If
End If
ActiveWindow.ScrollRow = ActiveCell.Row - 8
ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub

So!
und beißt sich das irgendwie mit der Tabellenformatvorlage? Du erwähntest bereits die "ListObjekt" in diesem Zusammenhang. An der Stelle bin ich allerdings ziemlich raus, bzw hab ich Nachholbedarf...
Anzeige
Ich schau morgen wieder rein, bin heute schon weg!
21.08.2017 17:20:14
Michael
AW: Ich schau morgen wieder rein, bin heute schon weg!
22.08.2017 08:28:36
EasyD
Na was ist denn das für ein Service?
;)
Nein,
Spaß!
mach wie du Zeit hast, keine Frage!
Ich bin ja immer dankbar wenn sich überhaupt mal jemand damit befasst!
Hier mal ein Beispiel für Dich
22.08.2017 12:55:31
Michael
D,
...zum Verständnis von formatierten Tabellen/Datentabellen bzw. Listobjects: https://www.herber.de/bbs/user/115630.xlsm
Ich habe Dir auf dem Tabellenblatt eine beispielhafte formatierte Tabelle angelegt, die in der ersten Spalte Nummern enthält. Das Makro "a" sucht eine Nummer in diesem Bereich und erweitert dann die formatierte Tabelle um eine Zeile unterhalb der gefundenen Zeile. Gehe den Code doch im Einzelschrittmodus (F8) durch, und schau Dir an was jeweils im Blatt passiert - ich habe bewusst .Select-Befehle drinnen gelassen, die Dir aufzeigen, wie Du mit dem ListObject arbeiten kannst (die müssen in einem produktiven Code natürlich raus!). Das Bsp ist nicht auf Basis einer UserForm, aber soll Dir das Prinzip aufzeigen, direkt mit der formatierten Tabelle zu arbeiten, anstelle von Blattbereichen.
Gib Bescheid, ob Du damit zurecht kommst - notfalls kann ich Dir Deinen CommandButton-Code auch noch entsprechend anpassen.
LG
Michael
Anzeige
AW: Hier mal ein Beispiel für Dich
23.08.2017 09:02:22
EasyD
Hey Michael
das muss ich mir in Ruhe reinziehen, finde ich aber sehr cool dass ich hier einen kostenlosen crash-kurs i.S. ListObjects bekomme.
Vielleicht wird mein Makro damit ja auch etwas schneller, denn die nächste Baustelle wäre gewesen sich mal gedanken darüber zu machen warum das bei mir alles so lange dauert - mal abgesehen von der Datenmenge die ich hier verarbeite.
Das kann nun natürlich nun etwas dauern bis ich mich wieder melde, weil ich mich da erstmal durch arbeiten will.
Ich schreib dir aber auf jeden Fall nochmal und melde Dir den Erfolg (oder gestehe meine Unfähigkeit ein).
Vielen herzlichen Dank jedenfalls schonmal, diese Info suche ich schon lange!
Anzeige
Ergänzend dazu...
23.08.2017 10:38:28
Michael
Hallo D,
Gerne! Wenn Du Fragen hast, kannst Du Dich immer vertrauensvoll an dieses Forum wenden. Beachte, dass Beiträge nach etwa einer Woche ins Archiv wandern und Du dann hier nicht mehr weiterschreiben kannst. D.h. in diesem Fall müsstest Du dann einen neuen Beitrag aufmachen, in den ich oder einE andereR HelferIn sich dann einklinkt.
warum das bei mir alles so lange dauert
Da kann es natürlich noch um weitere Code-Optimierungen gehen, ist aber jetzt in Unkenntnis Deiner genauen Verhältnisse nicht zu beantworten. Dafür braucht es dann vermutlich eine konkrete Bsp-Datei Deinerseits für geneigte HelferInnen (natürlich mit anonymisierten Daten):
Hier noch Dein CmdBtn-Code analog zu meinem o.a. Bsp angepasst, mit Bezug auf ListObjects:
Private Sub CommandButton_Best_Click()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("WKB")
Dim L As ListObject: Set L = Ws.ListObjects("Tabelle1")
Dim Nummer, f, Debitoren As Range
Application.ScreenUpdating = False
Nummer = TextBox_DebBest
If Len(Nummer)  7 Then
MsgBox "Debitorennummer muss 7-stellig sein!"
TextBox_DebBest.SetFocus
Else
With L
With .DataBodyRange
Set Debitoren = .Resize(.Rows.Count, 1)
End With
f = Application.Match(Nummer, Debitoren, 0)
If Not IsError(f) Then
.ListRows.Add (f + 1)
With .DataBodyRange
.Cells(f + 1, 1) = .Cells(f, 1)
.Cells(f + 1, 20) = .Cells(f, 20)
.Cells(f + 1, 2).Activate
End With
Unload Me
End If
End With
Wb.Save
ActiveWindow.ScrollRow = ActiveCell.Row - 8
End If
Set Wb = Nothing: Set Ws = Nothing
Set L = Nothing: Set Debitoren = Nothing
End Sub
Gib Bescheid - hier oder anderswo!
LG
Michael
Anzeige
AW: Ergänzend dazu...
25.08.2017 15:40:59
EasyD
Hey Michael
ich habe mal etwas herum gespielt. Mit deinem Code funktioniert zwar das Zeilen einfügen, aber:
- es dauert eigentlich genauso lange wie vorher.
- das Problem mit dem Datumsformat ist immer noch nicht gelöst.
Er fügt mir eine Zeile ein wie gewünscht, stellt aber das Datumsformat auf US-amerikanisch (=benutzerdefiniert") ein. Keine Ahnung wieso.
Deinen Code habe ich angepasst. Läuft jetzt in einem extra-Modul, nicht in der Userform.
Entsprechend frage ich auch nicht die Textbox_Best ab, sondern gebe hart eine Nummer vor die in der Liste enthalten ist (nur für Testzwecke).
wie folgt:
Sub Test()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("WKB")
Dim L As ListObject: Set L = Ws.ListObjects("WKB_Tab")
Dim Nummer, f, Debitoren As Range
'Application.ScreenUpdating = False
Nummer = 2010914 'TextBox_DebBest
If Len(Nummer)  7 Then
MsgBox "Debitorennummer muss 7-stellig sein!"
'TextBox_DebBest.SetFocus
Else
With L
With .DataBodyRange
Set Debitoren = .Resize(.Rows.Count, 1)
End With
f = Application.Match(Nummer, Debitoren, 0)
If Not IsError(f) Then
.ListRows.Add (f + 1)
With .DataBodyRange
.Cells(f + 1, 1) = .Cells(f, 1)
.Cells(f + 1, 20) = .Cells(f, 20)
.Cells(f + 1, 2).Activate
End With
'Unload Me
End If
End With
Wb.Save
'ActiveWindow.ScrollRow = ActiveCell.Row - 8
End If
Set Wb = Nothing: Set Ws = Nothing
Set L = Nothing: Set Debitoren = Nothing
'Application.ScreenUpdating = True
End Sub

Alles in allem scheint das Makro nicht das Problem - auf folgenden Ansatz hätte ich auch schon früher mal kommen können:
Ich habe einfach mal "per Hand" eine Zeile eingefügt. Das Ergebnis ist das gleiche - ein US-amerikansiches Datum in der Spalte. Also liegt es wohl definitiv NICHT am Makro...
Was sagtst du?
Grüße
Easy
Anzeige
Lade eine Bsp-Mappe hoch! Schönes WE, owT
25.08.2017 15:49:47
Michael
AW: Lade eine Bsp-Mappe hoch! Schönes WE, owT
28.08.2017 13:15:06
EasyD
So Michael
hier die Mappe
Ich habe kurzerhand zur Anomysierung alles raus gelöscht was geheim bleiben muss und durch MsgBoxen ersetzt. Das Problem ist aber auffindbar.
Im Modul1 habe ich die Testversion von deinem Code-Beispiel drin
Die eigentliche Prozedur liegt allerdings hinter dem Button "Zeile einfügen" - Aufruf der Userform mit dem entsprechenden Code dahinter.
Aber wie gesagt - ich vermute das Problem in der Tabellenformatvorlage.
Das Tabellenblatt heißt WKB
Die Tabelle heißt WKB_Tab
https://www.herber.de/bbs/user/115829.xlsm
Ich bin gespannt!
Anzeige
AW: Lade eine Bsp-Mappe hoch! Schönes WE, owT
31.08.2017 13:07:54
EasyD
Hey Michael
ich will nicht drängeln, aber du warst in den letzten Tagen mit deinen Antworten immer so fix.
Hast du mal rein schauen können?
Grüße

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige