5.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,
ich möchte eine Eingabemaske (wie unter Daten/Maske) erstellen, jedoch sollte diese mit einem Drop-Down für Auswahlfelder versehen werden.
Die Datenbankfelder sollten wie folgt aussehen:
Datum - Begründung(mit Drop-Down auswählbar) Kunde - Betrag

Hat jemand ein ähnliches Beispiel oder kann mir jemand dabei Hilfe leisten?
Vielen Dank
Stefan

15 Antworten

0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Stefan,

Damit meine Antwort nicht ins Leere geht, um welche Version von Excel oder Access handelt es sich bei der Problemstellung.

Für Excel könnte ich mir eine UserForm vorstellen und in Access ginge es mit Kombinationsfeldern in einem Formular.

Gruß

Paul1
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Stefan,

verwende ein DropDown-Listenfeld aus der Gültigkeitsprüfung. Lege dazu deine Auswahlkriterien (irgendwo) im Tabellenblatt ab und weise der Gültigkeitsliste diesen Zellbereich als Quelle zu.

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo,

die Version ist Excel 2003,
ich habe schon eine Userform mit den entsprechenden Eingabefeldern vorbereitet.

Danke
Stefan
0 Punkte
Beantwortet von
und Probleme habe ich vor allem mit folgender Befehlszeile:
erste_freie_Zeile = Sheets("Kostenauflistung").Range("A1").Selection.End(xlDown).Offset(1).Row
0 Punkte
Beantwortet von
erste_freie_Zeile = Sheets("Kostenauflistung").Range("A1").Selection.End(xlDown).Offset(1).Row

So, den Fehler habe ich jetzt selber entdeckt. Selection gehört nicht hier rein.

Jetzt habe ich noch ein Problem:
Wenn ich im Datumsfeld kein gültiges Datum (z.B. Text) eingebe, dann
bekomme ich immer die Fehlermeldung zum Debuggen. Wie kann ich falsche Eingaben kontrollieren und zb mit einer MsgBox anzeigen?

Ich kopiere mal meinen Quellcode hier rein:
--------------------------------
Option Explicit

Private Sub Eingeben_Click()
'Variable deklarieren
Dim erste_freie_Zeile As Integer
'erste freie Zeile in Blatt "Kostenauflistung" ermitteln
'und in Variable "erste_freie_Zeile" schreiben
'erste_freie_Zeile = Sheets("Kostenauflistung").Range("A65536").End(xlUp).Offset(1, 0).Row
erste_freie_Zeile = Sheets("Kostenauflistung").Range("A1").End(xlDown).Offset(1).Row
'In Blatt "Kostenauflistung"





'With Sheets("Kostenauflistung")
'Spalte A, erste freie Zeile das Datum im Datumsformat übertragen
Sheets("Kostenauflistung").Cells(erste_freie_Zeile, 1) = CDate(TextBox1.Text)
'Spalte B, erste freie Zeile den Betrag im Währungsformat übertragen
'Sheets("Kostenauflistung").Cells(erste_freie_Zeile, 2) = Format(TextBox2.Text, "#,##0.00 €")
Sheets("Kostenauflistung").Cells(erste_freie_Zeile, 2) = Format(TextBox2.Text)
'Spalte C, erste freie Zeile das ausgewählte Konto übertragen
Sheets("Kostenauflistung").Cells(erste_freie_Zeile, 3) = ComboBox1.Text
'End With
Unload Me
End Sub

Private Sub Abbruch_Click()
'UserForm schließen
Unload Me
End Sub

Private Sub UserForm_Initialize()
'Variable deklarieren
Dim Wiederholungen As Integer
'Schleife zum Füllen der ComboBox mit den Daten aus Blatt "Hilfstabelle"
'Spalte A ab Zeile 2 bis zur letzten gefüllten Zeile
For Wiederholungen = 2 To Sheets("Hilfstabelle").Range("A65536").End(xlUp).Row
ComboBox1.AddItem Sheets("Hilfstabelle").Cells(Wiederholungen, 1)
Next
End Sub
--------------------------------
Danke nochmals!
Stefan
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Stefan,

prüfe bereits nach der Eingabe beim Verlassen der textBox, ob es ein gültiges Datum ist. Dazu diesen Code im Codemodul des UserForms:
Option Explicit
Dim blnAction As Boolean

Private Sub TextBox2_AfterUpdate()
If IsDate(TextBox2) And Len(TextBox2) - Len(Replace(TextBox2, ".", "")) = 2 Then
blnAction = True
End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If blnAction = False Then
If TextBox2 <> "" Then
MsgBox "Bitte ein gültiges Datum eintragen"
TextBox2 = ""
Cancel = True
End If
End If
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Stefan,

Um Nägel mit Köpfen zu machen wäre es am vernünftigsten, wenn Du ein konkretes Beispiel (mit verfälschten Daten) samt der von Dir vorbereiteten UserForm im nachfolgenden Link hochlädst und den Dir bekanntgegebenen Link hier ins Forum stellst.

Dann schaun wir mal.

Link


Gruß

Paul1

P.S.
Vielleicht hilft Dir auch schon das weiter
Konzept
0 Punkte
Beantwortet von
Hallo Karin,
danke für deine Antwort.
Habe nun deinen Code folgendermaßen in das Userform eingegeben.
Die Fehlermeldung ist: Variable nicht definiert... die hab ich ja aber schon deklariert..
hm?
guckst du:
---------------------------------
Private Sub Eingeben_Click()
'Variable deklarieren
Dim erste_freie_Zeile As Integer
Dim blnAction As Boolean
'erste freie Zeile in Blatt "Gesamtliste" ermitteln
'und in Variable "erste_freie_Zeile" schreiben

erste_freie_Zeile = Sheets("Gesamtliste").Range("A1").End(xlDown).Offset(1).Row
'In Blatt "Gesamtliste"
'Datum, erste freie Zeile das Datum im Datumsformat übertragen
Sheets("Gesamtliste").Cells(erste_freie_Zeile, 1) = CDate(Datum.Text)


Private Sub TextBox2_AfterUpdate()
If IsDate(TextBox2) And Len(TextBox2) - Len(Replace(TextBox2, ".", "")) = 2 Then
blnAction = True
End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If blnAction = False Then
If TextBox2 <> "" Then
MsgBox "Bitte ein gültiges Datum eintragen"
TextBox2 = ""
Cancel = True
End If
End If

---------------------------------------
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Stefan,

die Variable blnAction ist bei mir außerhab der Prozeduren deklariert, sodass sie in beiden Prozeduren verwendet werden kann. Falls es keine Datumseingabe ist, wird diese Variable im AfterUpdate Ereignis der TextBox auf True gesetzt und dann im Exit Ereignis geprüft, ob sie Ture ist - falls Ja, kommt die MsgBox und der Eintrag wird wieder gelöscht.

Bis später,
Karin
0 Punkte
Beantwortet von
So, mal beiden ein herzliches DAAAANNNKKEEE!!!

Die Abfrage zum Datum klappt schon mal... jedoch kommt jetzt folgendes Problem auf, daß ich die restlichen Eingaben nicht mehr "steuern" kann.
schicke euch mal - wie von paul1 vorgeschlagen - den link zur gesamten Datei.

http://www.file-upload.net/download-4381543/bericht-neu-test.XLS.html

Schöne Grüße
Stefan
...