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

Test Datenpflege

Test Datenpflege
amintire
Guten abend alle zusammen,
ich komme leider mit der Datei nicht weiter. Sobald ich den Button betätige um mit der Datenpflege (UserForm) zu beginnen - auf speichern gehe kommt immer eine Fehlermeldung.
Weiß nicht was genau ich da ändern soll.
Hier eine Tabelle um es besser erläutern zu können.
Die Textfelder müssen in den entsprechenenden Zellen eingetragen werden. Wie bekommt man im UserForm bei einer Listbox die Auswahl hin? Und wie bekommt man bei UserForm einen Kalender hin?
https://www.herber.de/bbs/user/67978.xls
Vielleicht hat ja einer von Euch Verbesserungsvorschläge. Bin für jede Hilfe dankbar.
Gruß amintire
AW: Test Datenpflege
13.02.2010 09:13:43
Christian
Hallo,
fang doch mal klein an. so zB:

Private Sub cmdSave_Click()
Dim i As Long, j As Long
With Sheets("Liste Mitarbeiter")
i = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(i, 1) = Me.ComboBox1
For j = 1 To 32
.Cells(i, j + 1) = Me.Controls("TextBox" & j)
Next
End With
End Sub
für einen Button "cmdSave".
Wie die siehst brauchst du bei den Spalten nur den Index, nicht die Buchstaben der Spaltenköpfe.
Gruß
Christian
AW: Test Datenpflege
13.02.2010 09:29:42
amintire
Hallo Christian,
vielen Dank für deine schnelle Antwort.
Den Code den ich habe funktioniert ja eigentlich - aber mit dem Rahmen bei der UserForm werden die Textfelder nicht angesprochen.
Ohne den Rahmen werden ja die Daten in den Textfeldern in die entsprechenden Zellen eingetragen.
Vielleicht weiß ja jemand wie man den Code verbessern / umschreiben kann.
Lieben Gruß
amintire
Anzeige
AW: Test Datenpflege
13.02.2010 09:40:21
Christian
Hallo,
Den Code den ich habe funktioniert ja eigentlich Nein, denn genau bei Spalte AA kriegst du den Fehler. Außerdem brauchst du nicht alle Controls prüfen, ob sie denn eine TextBox sind. Du kennst doch deine TextBoxen.
Hast du meinen Code mal ausprobiert? Der macht genau das was du willst. Die Einträge der Textboxes werden in die nächste freie Zeile geschrieben.
Gruß
Christian
AW: Test Datenpflege
13.02.2010 10:00:58
amintire
Hallo,
ich hab deinen Code gegen meinen ersetzt und wenn ich auf speichern gehe tut sich nichts.
Wo soll der Code genau hin?
Gruß
AW: Test Datenpflege
13.02.2010 10:06:55
Christian
Wenn du deinen Code ersetzt, dann nenne den CommandButton "Speichern" um in "cmdSave".
Oder erzeuge einen neuen CommandButton mit dem Namen "cmdSave", dann kannst du beide Varianten parallel ausprobieren.
Gruß
Christian
Anzeige
AW: Test Datenpflege
13.02.2010 10:15:50
amintire
Hallöchen,
also habe den Code jetzt so umgeschrieben:
Private Sub Speichern_Click()
Dim i As Long, j As Long
With Sheets("Liste Mitarbeiter")
i = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(i, 1) = Me.ComboBox1
For j = 1 To 32
.Cells(i, j + 1) = Me.Controls("TextBox" & j)
Next
End With
If TextBox1 = "" Then
MsgBox ("Bitte Namen eingeben")
TextBox1.SetFocus
End If
Application.ScreenUpdating = False
'Rahmen hinzufügen bei der Tabelle
Sheets("Liste Mitarbeiter").Select
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
ActiveCell.Range("A1:AF1").Select
Selection.Borders.LineStyle = xlContinuous
ActiveCell.Offset(1, 0).Range("A1").Select
Application.ScreenUpdating = True
Unload Me
End Sub

Jetzt kommt aber der Rahmen immer eine Zeile drunter... was hab ich jetzt wieder falsch gemacht?
Gruß amintire
Anzeige
AW: Test Datenpflege
13.02.2010 10:23:09
amintire
Hallo Christian,
also jetzt funktioniert es mit dem Rahmen- hab Cells(65000, 1). auf Cells(i,1) geändert.
Danke für deine Hilfe soweit....
Wie bekomm ich jetzt eine Listbox bei Anrede hin? ;) Weißt du des evtl.?
Gruß amina
Userform - Textbox-Eintrag in Tabelle schreiben
13.02.2010 10:37:25
Christian
Hallo Amina,
ich glaube, du meinst ComboBox, nicht Listbox, oder lieg ich falsch?
hier mein Vorschlag für den komplette Code im "Eingabefrm":

Option Explicit
Private Sub Speichern_Click()
Dim i As Long, j As Long
If TextBox1 = "" Then
MsgBox ("Bitte Namen eingeben")
TextBox1.SetFocus
Exit Sub
End If
With Sheets("Liste Mitarbeiter")
i = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(i, 1) = Me.ComboBox1
For j = 1 To 32
.Cells(i, j + 1) = Me.Controls("TextBox" & j)
Next
.Cells(i, 1).Resize(, 33).Borders.LineStyle = 1
End With
Unload Me
End Sub
Private Sub Schließen_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Me.ComboBox1.List = Sheets("ListBox").Cells(2, 1).Resize(6).Value
End Sub
Gib mir bescheid wie du damit zurecht kommst
Gruß
Christian
Anzeige
AW: Userform - Textbox-Eintrag in Tabelle schreiben
13.02.2010 10:47:01
amintire
Hallo Christian,
vielen Dank für deine Hilfe.
Meinte natürlich ComboBox, hab es aber ohne Code gelöst gehabt indem ich bei Eigenschaften bei "RowCource" den Wert =Listbox!A:A eingegeben habe. Welche Lösung ist hier besser? Der Code oder die Eingabe bei den Eigenschaften oder kommt es aufs gleiche hinaus?
Gruß Amina
AW: ComboBox RowSource
13.02.2010 10:53:10
Christian
Wenn die Einträge von Anfang an fix sind, kann man ebenso RowSource verwenden.
Ich bevorzuge es, eine ComboBox (und ebenso ListBox) per Code zu füllen, Das ist nur eine Zeile Code und man ist variabler.
Gruß
Christian
AW: Test Datenpflege
13.02.2010 10:48:10
fcs
Hallo Amintire,
markiere im Blatt "Listbox" die Einträge, die für die Anrede in der Combobox auswählbar sein sollen. Dann vergibst du für den Bereich einen Namen z.B: Auswahl.Anrede
Im VBA-Editor selektierst du dann im Userform die Combobox. Unter den Eigenschaften der Combobox trägst du unter "RowSource" den Namen ein.
Der Code für das Eintragen der gewählten Anrede schaut etwa wie folgt aus:
      liSpalte = 1
If Me.ComboBox1.ListIndex  -1 Then
Sheets("Liste Mitarbeiter").Cells(liZeile, liSpalte).Value = Me.ComboBox1.Value
Else
MsgBox "Es wurde noch keine Anrede ausgewählt"
End If

Das Färben der neu eingefügten Zeilen geht etwa so:
    Dim liZeile, liSpalte As Integer, rngBereich As Range
Dim wksListe As Worksheet
Set wksListe = Sheets("Liste Mitarbeiter")
'Rahmen hinzufügen bei der Tabelle
With wksListe
'Nächste freie Datenzeile in Spalte A(1) der Liste
Set rngBereich = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0)
rngBereich.Range("A1:AG1").Borders.LineStyle = xlContinuous
rngBereich.Range("A1:L1").Interior.Color = .Range("A4").Interior.Color
rngBereich.Range("M1:Q1").Interior.Color = .Range("M4").Interior.Color
rngBereich.Range("R1:V1").Interior.Color = .Range("R4").Interior.Color
rngBereich.Range("W1:AG1").Interior.Color = .Range("W4").Interior.Color
liZeile = rngBereich.Row
End With

Gruß
Franz
Anzeige
Rahmen ohne Farbe
13.02.2010 10:57:49
amintire
Hallo Franz,
die Färbung der Zellen ist nicht schlecht, wollte aber nur einen Rahmen haben. die erste Linienart bei Rahmenformatierung.
Gruß Amina
AW: Rahmen ohne Farbe
13.02.2010 11:04:36
Christian
hallo nochmal,
der Rahmen wird ja in meinem Beispiel mit

.Cells(i, 1).Resize(, 33).Borders.LineStyle = 1
gesetzt. Wenn du den gepunkteten Rahmen willst dann schreibe darunter noch die folgende Zeile

.Cells(i, 1).Resize(, 33).Borders.Weight = 1
Gruß
Christian
AW: Rahmen ohne Farbe
13.02.2010 11:16:25
amintire
Hallo Christian,
du bist echt ein Schatz, danke echt - hab schon Zahlen ausprobiert ohne Ergebnis.
So passt es jetzt...
Gruß Amina
Anzeige
Da hast du was durcheinandergebracht,...
13.02.2010 15:29:13
Luc:-?
...Christian,
gepunktet wäre eine ...LineStyle-Angabe (xlDot ⇒-4118), während mit ...Weight die Strichstärke bzw Liniendicke (xlHairline ⇒1) gemeint ist.
Ich würde auch eher mit den Enumerationswerten der Eigenschaften arbeiten, falls MS mal irgendwas an den Zahlenwertzuordnungen ändert...
Gruß Luc :-?
...eher nicht
13.02.2010 16:24:18
Christian
... Luc
denn in dem File von Amina ist die Zeile der Überschrift nun mal mit Weight = 1 (xlHairline) umrahmt.
Ob man das jetzt als gepunktet oder sonstwie bezeichnet... Es sieht jedenfalls gepunktet aus und ist des Weiteren eine Linienstärke, die ich nie verwende - das ist aber Geschmackssache.
Was die Enumerationswerten angeht, hast du wahrscheinlich recht. Hier baue ich einfach mal darauf, dass der Wechsel noch 2-3 Jahre auf sich warten lässt und bis dahin VBA sowieso keinen mehr interessiert.
Gruß
Christian
Anzeige
Warum interessiert in 2-3 jahren keinen mehr Vba?
13.02.2010 17:21:26
Reinhard
Hallo Christian,
wegen .NET?
Gruß
Reinhard
Doch! Gepunktet ist STYLE, Hairline ist WEIGHT,...
13.02.2010 19:58:19
Luc:-?
...Christian,
und genau das habe ich auch geschrieben! Es ist nicht egal wie etwas genannt wird, denn Gepunktet gibt's auch! Das, was du bei .LineStyle geschrieben hast, ist xlContinuous, also durchgezogen, ohne Unterbrechung. Gepunktet wäre aber nicht durchgezogen, sondern eben mit Unterbrechungen. Schlampigkeiten in der Ausdrucksweise sind kein Merkmal sauberen Pgmierens. Durch so etwas sind (früher) in Großrechenzentren schon Millionenschäden entstanden... ;-/
Gruß Luc :-?
Anzeige
Jo, is' ja gut, Luc...
14.02.2010 13:59:24
Christian
... Schlampigkeiten in der Ausdrucksweise erlaube ich mir in einem solchen Fall, denn xlHairline in Verbdinung mit xlContinuous wird bei allen mir bekannten Auflösungen als "gepunktete" Linie dargestellt. Weil das IMHO scheiße aussieht, verwende ich dies auch nicht.
Schlampigkeiten beim Coding versuche ich jedoch zu vermeiden.
Also - leg dich wieder hin...
schönes WE, Gruß Christian
Ja, ja, wenn du das aber bspw für die...
14.02.2010 14:08:32
Luc:-?
...Umsetzung in HTML benötigst, Christian,
musst du das auch exakt im PgmCode benennen... ;-) Und 'ne Haarlinie ist wohl nur bei Xl und gewissen Monitoren „gepunktet“ — in Zeichenpgmm ist sie es nicht!
SchöSo - Sonne scheint!
Luc :-?
Anzeige
hier schneit es... oT
14.02.2010 14:51:29
Christian
Auch schön! Schipp, schipp, hurra! ;-) orT
14.02.2010 17:02:24
Luc:-?
Gruß Luc :-?
AW: Auch schön! Schipp, schipp, hurra! ;-) orT
16.02.2010 12:55:20
JoWE
Luc spricht sich doch wohl so ähnlich wie 'Lück' , oder?
Kannst Du also nicht einfach mal deinen Namen ehren und mal auf die Rheinische 'Lück', also auf 'Lücke setzen'?
Nix für Ungut :-))

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige