Anzeige
Archiv - Navigation
1352to1356
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

Stammdaten Maske

Stammdaten Maske
14.03.2014 15:01:35
Dauergast
Hallo,
nach dem ich schon im diesem Forum und auch in anderen nach Eingabemasken gesucht habe, doch keine passende für mein Problem gefunden habe, hoffe ich auf eure Hilfe:
Ich möchte gerne eine Eingabemaske per Makro und keine Datenmaske erstellen:
Bis jetzt habe ich die Spalten Name, Geburtsdatum, Straße, PLZ/Ort und Ausbildung in meinem Tabellenblatt 1( Spalten A bis E). Ein UserForm habe ich auch erstellt mit den jeweiligen Textfeldern (siehe Spaltennamen) und den Befehlsschaltflächen "Daten übernehmen" und "Abbruch".
Hinter dieses UserForm habe ich folgenden Code hinterlegt, bei dem allerdings die Fehlermeldung "Fehler beim Kompilieren- Außerhalb einer Prozedur ungültig" auftritt :
Dim emptyRow As Long
emptyRow = WorksheetFunction.CountA(Worksheets(1).Range("A:E")) + 1
Worksheets(1).Cells(emptyRow, 1).Value = Name.Value
Worksheets(1).Cells(emptyRow, 2).Value = Geburtsdatum.Value
Worksheets(1).Cells(emptyRow, 3).Value = Straße.Value
Worksheets(1).Cells(emptyRow, 4).Value = PLZ / Ort.Value
Worksheets(1).Cells(emptyRow, 5).Value = Ausbildung.Value
Ziel der Eingabemaske sollte es sein, dass die Daten, die in die Eingabemaske eingegeben werden, als neue Zeile in Tabellenblatt 1 erscheinen. Ist so etwas möglich?
Ich bitte meine geringen VBA Kenntnisse zu entschuldigen und hoffe auf eure Hilfe...

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Stammdaten Maske
14.03.2014 16:27:36
Oberschlumpf
Hi #Name?
Zeig uns mal ne Bsp-Datei, die Bsp-Daten und dein Userform und den Code enthält.
Danke.
Ciao
Thorsten

AW: Stammdaten Maske
15.03.2014 00:18:39
Uwe
Hallo namenloser,
hab mir mal die Mühe gemacht und deine Eingabemaske nachgebastelt. Keine Ahnung ob deine Mappe auch so aussieht.
https://www.herber.de/bbs/user/89675.xlsm
Probiers mal.
Grüße Uwe
PS.: Rückmeldung wäre nett.

AW: Stammdaten Maske
17.03.2014 10:41:49
Dauergast
Hallo,
danke zunächst für die Antworten. Ich habe über das Wochenende meinen Code überarbeitet und modifiziert. Zur Excel Tabelle nochmal: In Spalte A steht der Name. in Spalte B das Geburtsdatum, in Spalte C die Straße, in Spalte D die PLZ/ORT und in Spalte E die Ausbildung. Uwe hat das in seiner Datei auch richtig abgebildet!...Zu meinem neuen Code: Ich habe nun insgesamt 4 Befehlsschaltflächen, nämlich "Neuer Eintrag", "Speichern", "Löschen", "Beenden". Durch "Neuer Eintrag" wird ein neuer Name in die Tabelle eingetragen, durch "Löschen" werden bereits vorhandene Daten gelöscht, durch "Speichern" werden meine Änderungen gespeichert und durch "Beenden" schließt sich die Eingabemaske. Außerdem habe ich in der Userform eine Listbox integriert, die mir die jeweiligen Namen anzeigt.
Im Folgenden mein Code:
Option Explicit
Option Compare Text
Private Sub CommandButton1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
lZeile = lZeile + 1
Loop
Tabelle1.Cells(lZeile, 1) = CStr("Neuer Eintrag Zeile " & lZeile)
ListBox1.AddItem CStr("Neuer Eintrag Zeile " & lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
End Sub

Private Sub CommandButton2_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub

Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
Exit Sub
End If
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 2).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 3).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 4).Value = TextBox4.Text
Tabelle1.Cells(lZeile, 5).Value = TextBox5.Text
If ListBox1.Text  Trim(CStr(TextBox1.Text)) Then
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub

Private Sub CommandButton4_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
TextBox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
TextBox4 = Tabelle1.Cells(lZeile, 4).Value
TextBox5 = Tabelle1.Cells(lZeile, 5).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub

Private Sub UserForm_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End Sub

Private Sub UserForm_Initialize()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
ListBox1.Clear
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1
Loop
End Sub
Mein Problem ist nun Folgendes: Zwar öffnet sich die Eingabemaske, und bestehende Daten werden dort auch angezeigt, doch steht unter Name in der Eingabemaske der Geburtstag, unter Geburtsdatum wird die Straße angezeigt und unter der Straße der Name. Unter PLZ/Ort wird auch tatsächlich PLZ bzw Ort angezeigt und bei Ausbildung ebenso.
Kann mir diesbezüglich jemand helfen?

Anzeige
AW: Stammdaten Maske
17.03.2014 10:51:36
Rudi
Hallo,
lad doch mal die Mappe hoch.
Gruß
Rudi

AW: Stammdaten Maske
17.03.2014 11:33:47
Rudi
Hallo,
schau dir mal deine Textbox-Namen an.
Name heißt z.B. TextBox2.
Gruß
Rudi

AW: Stammdaten Maske
17.03.2014 13:08:51
Dauergast
Hallo,
danke für die Antwort. hat mir geholfen
Jetzt hätte ich noch eine andere Frage:
Ich möchte jetzt noch die Spalte F ("beschäftigt als") hinzufügen und habe den folgenden Teil des Codes verändert, sodass eine TextBox 6 nun hinterlegt ist:
Private Sub ListBox1_Click()
Dim lZeile As Long
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
If ListBox1.ListIndex >= 0 Then
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
TextBox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
TextBox4 = Tabelle1.Cells(lZeile, 4).Value
TextBox5 = Tabelle1.Cells(lZeile, 5).Value
TextBox6 = Tabelle1.Vells(1Zeile, 6).Value
Exit Do
End If
lZeile = lZeile + 1
Loop
End If
End Sub
Dabei wird mir allerdings folgender Fehler angezeigt Fehler beim kompilieren-Syntaxfehler...Was kann ich hier machen?!

Anzeige
Tabelle1.Vells ? owT
17.03.2014 13:09:46
Rudi

AW: Tabelle1.Vells ? owT
17.03.2014 13:26:36
Dauergast
Hallo,
entschuldige ich habe mich hier verschrieben gehabt...das tut mir wirklich leid!!
Auch mit Cells tritt die gleiche Fehlermeldung auf1Woran kann das liegen...Muss ich irgendwo am Code noch was ändern?!

AW: Tabelle1.Vells ? owT
17.03.2014 13:36:20
hary
Moin
Kann es sein das sich ein Schreibfehler eingeschlichen hat?
Hier:
Cells(1Zeile, 6)
Das statt l(wie Ludwig) du eine 1(Eins) geschrieben hast.
gruss hary

1 statt l
17.03.2014 13:44:38
Rudi
Hallo,
das hat jetzt aber weniger mit mangelnden VBA-Kennnissen als mit mangelnder Sorgfalt zu tun.
Zusätzlich zu Vells 1Zeile statt lZeile. (einsZeile statt elZeile)
TextBox6 = Tabelle1.Vells(1Zeile, 6).Value
schreib mal Option Explicit in den Kopf deine Moduls. Dann meckert der Kompiler nicht deklarierte Variablen an und du findest solche Fehler sofort.
Bzw. stell es über Extras-Optionen-Editor, Haken bei Variablendeklaration erforderlich fest ein.
Gruß
Rudi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige