Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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
Überschrift nach VBA UserForm Eintrag
07.02.2016 00:23:00
Rudolf
Hallo Zusammen
Ich habe eine Excel Tabelle die ich zur Kundenverwaltung erstellt habe.
Dabei habe ich eine Userform wo man diverse Angaben ändern kann.
Nun möchte ich gerne, dass bei jedem Klick auf „Speichern“ im Userform zwecks Übersicht folgendes passiert:
1)
Siehe Bild A, habe ich mit nachfolgendem Code bereits hingekriegt, dass zu jedem Verantwortlichen eine Überschrift mit dem Namen des Verantwortlichen nach dem Klick auf den „Speichern“ Button generiert wird (Spalte F). Die Sortierung dazu habe ich auch bereits in einem anderen Modul programmiert und klappt ebenfalls. Das bedeutet nach der Sortierung, wird dann die "Namenszeile" eingefügt. Bei jederm speichern, werden zuerst alle Namenszeilen bzw. Überschriften gelöscht, die Tabelle sortiert und die Namenszeilen wieder eingetragen:
Userbild

Sub NamenszeileEintragen()
' neue Namenszeilen eintragen
If tbl_Kuli.Cells(Rows.Count, 1).End(xlUp).Row > 2 Then
For i = 1 To tbl_Kuli.Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 6).Value  Cells(i + 1, 6).Value Then
tbl_Kuli.Rows(i + 1).Select
Selection.Insert Shift:=xlDown
tbl_Kuli.Cells(i + 1, 6) = Cells(i + 2, 6).Value
tbl_Kuli.Range(tbl_Kuli.Cells(i + 1, 1), tbl_Kuli.Cells(i + 1, 24)).Interior. _
ColorIndex = 41 'oder direkt die Farbe angeb
With tbl_Kuli.Range(tbl_Kuli.Cells(i + 1, 1), tbl_Kuli.Cells(i + 1, 24))
.Font.ColorIndex = 2
.Font.Size = 20
.Font.Bold = True
.Borders.LineStyle = xlNone
.BorderAround
.RowHeight = 30
End With
End If
Next i
End If
End Sub



Sub NamenszeileLöschen()
'alte Namenszeilen löschen
intLastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
For intRow = intLastRow To 1 Step -1
If Application.CountA(Rows(intRow)) = 0 Then
intLastRow = intLastRow - 1
Else
Exit For
End If
Next intRow
For intRow = intLastRow To 1 Step -1
If IsEmpty(Cells(intRow, 1)) Then
Rows(intRow).Delete
End If
Next intRow
End Sub


2)
Ich möchte nun zusätzlich und das kriege ich einfach nicht hin, dass es innerhalb eines Verantwortlichen eine weitere Unterteilung bzw. Oberzeile mit dem Land erstellt wird (Spalte D).
Damit man versteht was ich meine, habe ich es auf Bild B ilustriert.
Userbild
Kann mir jemand sagen wir ich das hinkriegen kann? :)
Vielen lieben Dank und Grüsse
Rudi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überschrift nach VBA UserForm Eintrag
07.02.2016 01:11:07
Oberschlumpf
Hi Rudi
Die Datei selbst per Upload wäre noch schön.
Ciao
Thorsten

Einige Begriffe zu Excel....
07.02.2016 08:30:16
EtoPHG
Rudolf, solltest du unbedingt klären!
1. Du redest von einer UserForm. Ich sehe nirgendwo (weder auf dem Bild, noch im Code) einen Hinweis auf eine Userform. Macht dir mit der XL-Hilfe klar, was eine Userform ist und verwende anschliessend den Begriff im richtigen Kontext.
2. Typischerweise (gilt für die Mehrheit der XL-Anwender) legst du mehr Wert auf das Aussehen, statt auf die Funktionalität. Eine solche Datenstruktu wird dir in Zukunft nur Probleme bereiten, ist fehleranfällig und wartungsunfreundlich. Siehe dazu auch Pkt.6
3. Dein Code referenziert Bereiche und Zeilen z.T. richtig und zu einem anderen Teil 'falsch' _ bzw. unvollständig, Beispiel:

tbl_Kuli.Cells(i + 1, 6) = Cells(i + 2, 6).Value

Die Zielzelle ist vollständig mit Tabellenblatt.Zelle(row, column) referenziert.
Die Quellzelle ist unvollständig referenziert, d.h. sie bezieht sich zum Zeitpunkt der Codeausführung auf das (dann zufällige) aktive Tabellenblatt.
4. Das .Select(ieren) von Zellen, zum Zweck von Änderungen ist in VBA zu nahezu 100% unnötig und kontraproduktiv. Lies dazu die Geschichte vom Malermeister & seinem Lehrling
5. Ein Bild mag zwar gewisse Information geben ,ist aber weit von einer Beispielmappe entfernt. Niemand wird deine Mappe nachbauen. Darum, lade sie ins Forum!
6. Das ist eine typische Anwendung für eine Pivot-Tabelle. Verwende die XL Grundfunktionalitäten, bevor du mit dem VBA Geschütz auffährst.
Gruess Hansueli

Anzeige
AW: Einige Begriffe zu Excel....
07.02.2016 20:05:34
Rudolf
Hallo Zusammen,
Beiliegend die File mit der Userform.
https://www.herber.de/bbs/user/103350.xlsm
Ja, es ist mir ganz gewiss das es sehr sehr unprofessionell programmiert ist, aber jeder muss irgendwo anfangen und die Güte kommt mit der Erfahrung :)
Wie gesagt es wäre toll wenn mir jemand verraten könnte wie ich diese weitere Überschrift nach Länder wie auf Bild B hinbekoommen würde zusätzlich zu den bereits (siehe im Modul) vorhandenen EIntragung der Überschrift für Namen :)
Lieben Dank und Grüsse
Rudi

AW: Einige Begriffe zu Excel....
08.02.2016 22:32:02
Oberschlumpf
Hi Rudolf
hier, versuch mal...

Die Datei https://www.herber.de/bbs/user/103381.xlsm wurde aus Datenschutzgründen gelöscht


Wie du gleich beim Öffnen siehst, hab ich mal n bisschen Ordnung reingebracht.
Ein Button sollte auch in nur einer Bsp-Datei nicht inmitten der Datenzeilen platziert werden.
Dadurch musste ich aber auch den Code insgesamt anpassen.
Die For/Next-Schleifen beginnen/enden nicht mehr in Zeile 1, sondern in der ersten Datenzeile.
Auch das Sortieren hab ich auf den Datenbereich eingeschränkt, und nicht die kompletten Spalten mit einbezogen.
Den Code, der nun auch die Länder in einer extra Zeile als Teilüberschriften anzeigt, findest du in
NamenszeileIn/Eintrag
Hilfts denn?
Ciao
Thorsten

Anzeige
AW: Einige Begriffe zu Excel....
09.02.2016 21:24:26
Rudolf
Hallo Thorsten!
WOW! Genauso habe ich mir das vorgestellt!
Einfach top, bin Dir unendlich dankbar!! :)
Und es wirkt nun auch sauber :P
Grazie 1000
Rudi

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige