1.8k Aufrufe
Gefragt in Tabellenkalkulation von
Ich will für einen Freund eine super Rechnungsvorlage erstellen die mit VBA-Befehlen so gut wie alles erledigt. Ich komme mit meinem Excel-2007 vba-Programmierung nicht weiter.

Die Rechnungsvorlage habe ich bereits erstellt.
Schritt 1:
Ich benötige eine Inputbox, wo ich das DAtum eingeben wird und in einer bestimmten Zelle ausgeben wird.

Schritt 2:
Ich benötige eine Imputbox die nach dem Kennzeichen fragt. Gibt man dieses ein wird per SVerweis in Tabelle 2 nach diesem gesucht und alle Kundendaten ins Rechnungsvormular gezogen.
Problem 1: Ist das Kennzeichen bzw. der Kunde noch nicht vorhanden, soll eine MsgBox kommen "Fahrzeug nicht vorhanden. Wollen Sie es eingeben?"
Button Ja dann wechsel in Tabelle 2 und öffne dort die Eingabemaske. "In alten Excel-Versionen "Symbolleiste Daten/Maske".

Kann mir jemand helfen.
vielen dank vorab
Schumi

1 Antwort

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Seeder oder Schumi,

Du solltest bei Deinen Fragen auch mal bekannt geben, wie Deine Datei aussieht (Zellenangaben). Dann könnte man etwas erstellen, was annähernd an Deine Dateistruktur herankommt.
Da diese Informationen fehlten, nachfolgend die Angaben meines Versuchsaufbaus:

A2 = Datum
B2 = Kennzeichen
C2 = Rückgabe SVERWEIS() Blatt "Tabelle2", Spalte 2
C3 = Rückgabe SVERWEIS() Blatt "Tabelle2", Spalte 3
D3 = Rückgabe SVERWEIS() Blatt "Tabelle2", Spalte 4

Kopiere die Makro in ein StandardModul und starte diese z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Datumseingabe()
Dim varDate As Variant

Beginn:
'Eingabe Datum
varDate = InputBox("Bitte Datum eingeben.", "Datumseingabe...", Date)
'Wenn keine Datumseingabe erfolgt, Prozedur beenden
If varDate = "" Or varDate = False Then Exit Sub
'Wenn Datumseingabe nicht im Datumsformat, dann Meldung und zur _
Sprungmarke Beginn" springen
If Not IsDate(varDate) Then
MsgBox "Datumsangabe entspricht nicht einem Datumsformat. " _
& "Eingabe wiederholen", vbCritical, "falsche Datumseingabe..."
GoTo Beginn
End If
'Übergabe des Datums in Zelle A2
Range("A2") = varDate
End Sub

Sub Dateneingabe()
Dim strKennzeichen As Variant
Dim varRückgabe As Variant
Dim intMeldung As Integer

varRückgabe = ""
Range("B2").ClearContents

Beginn:
'Eingabe Datum
strKennzeichen = InputBox("Bitte Kennzeichne eingeben.", "Eingabe...", "Kennzeichen eintragen...")
'Wenn keine Datumseingabe erfolgt, Prozedur beenden
If strKennzeichen = "" Or strKennzeichen = False Then Exit Sub

On Error Resume Next
'Über SERWEIS suchen, ob Kennzeichen existiert
varRückgabe = Application.WorksheetFunction.VLookup(strKennzeichen, _
Sheets("Tabelle2").Range("A1:D" & _
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row), 1, False)
On Error GoTo 0

If varRückgabe <> "" Then
'Wenn Kennzeichen vorhanden, dann Kennzeichen übertragen
Range("B2") = UCase(strKennzeichen)
Else
intMeldung = MsgBox("Das eingetragene Kennzeichen wurde nicht gefunden" & vbLf & vbLf _
& "Möchten Sie das Kennzeichen nun erfassen?", vbQuestion + vbYesNo, _
"Kennzeichen erfassen?")
'Wenn Nein betätigz, Prozedur beenden
If intMeldung = 7 Then Exit Sub
'Blatt "Tabelle2" aufrufen und Datenmaske öffnen
Sheets("Tabelle2").Activate
ActiveSheet.ShowDataForm
End If
End Sub
Beim Makro "Datumseingabe" wird die Eingabe auf einen korrekten Datumswert geprüft. Ist die Eingabe in Ordnung, wird das Datum in Zelle "A2" ausgegeben

Beim Makro "Dateneingabe" wird nach der Eingabe des Kennzeichen (Eingabe Groß- oder Kleinbuchstaben egal) über die "VLookup-Funktion" (SVEREWEIS() in VBA) geprüft, ob das Kennzeichen vorhanden ist. Wird ein Wert zurückgegeben, wird das Kennzeichen in Großbuchstaben in Zelle "B2" eingetragen.
Wird kein Wert zurückgegeben, erscheint eine Abfrage. Wird dort "Ja" betätgt, wird Tabellenblatt "Tabelle2" aufgerufen und die Datenmaske wird aufgerufen.

Wobei ich das mit der Kennzeicheneingabe und dem Neuanlegen des Kennzeichens anders regeln würde. Ich würde das über eine UserForm realisieren. Ich habe Dir mal eine Beispieldatei hochgeladen, in der ich das mal realisiert habe.

http://www.excelbeispiele.de/Beispiel_Supportnet/Beispiel_Seeder.xls

Du rufst die UserForm über den Button auf und trägst das Kennzeichen in der ComboBox ein oder wählst es aus vorhandenen aus. Bei der Eingabe siehst Du sofort, ob es das Kennzeichen bereits gibt, da die Daten autovervollständigt werden.
Bei Betätigen des Buttons werden die Daten (ohne SVERWEIS()) in das Tabellenblatt „Tabelle1“ übertragen. Gibt es den Datensatz noch nicht, so erscheint eine Abfrage. Wird dort „Ja“ betätigt, werden die Daten in „Tabelle2“ in die erste freie Zeile übertragen und die Daten werden ebenfalls in Blatt „Tabelle1“ in die Zeile 8 eingetragen.
In der Datei ist überigens auch das Beispiel mit obigen Makros realisiert. Schau Dir das einfach mal an.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
...