[Suche] Gute Anleitung zu einerm Excelformular

vollbase

Cadet 2nd Year
Registriert
Jan. 2013
Beiträge
21
Hi,
ich suche eine gute Anleitung um ein Formular zu erstellen welches mit ermöglicht die nötigen Daten aufzunehmen und dann per Knopfdruck an die entsprechenden Zellen weiter zu geben.

Gute Anleitung da ich nicht der Excelprof. bin :)

Ich habe einen Code Teil aber da weiß ich nicht wie ich den auf die jeweiligenZellen bekommen
Code:
Private Sub cmdStart_Click()
'Übernimmt die eingetragenen Werte und chließt das Formular "Adressfenster"

Dim intErsteLeereZeile As Long

intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 1).End(x1Up).Row + 1

    ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtCompany
    ActiveSheet.Cells(intErsteLeereZeile, 2).Value = Me.txtName
    ActiveSheet.Cells(intErsteLeereZeile, 3).Value = Me.txtStreet
    ActiveSheet.Cells(intErsteLeereZeile, 4).Value = Me.txtZipcode
    ActiveSheet.Cells(intErsteLeereZeile, 5).Value = Me.txtCity

Unload frm_addy_FF
End Sub


Company soll nach Zelle= A13
Name=A14
Street= A15
Zipcode= A16
City= A17
 
Ganz simpel so, ob du das aber per Commandbutton oder Öffnen der Datei bzw. des Tabellenblattes machen willst weis ich nicht.

P.S. der Code ist nicht von mir sondern habe ich aus einem der Office Foren.

Code:
Private Sub CommandButton1_Click()

 Range("A13").Value = InputBox("Company")

Range("A14").Value = InputBox("Name")

Range("A15").Value = InputBox("Street")

Range("A16").Value = InputBox("Zipcode")

Range("A17").Value = InputBox("City")


End Sub

Was du da hast ist eine Abfrage der letzten(?) leeren Zelle und in dieser wird dann der Wert eingetragen. Zudem gehört noch eine Userform(?) dazu ("Unload frm_addy_FF")
 
Zuletzt bearbeitet: (Fehler in Zelle Danke @cumulonimbus8)
Der Code den du hier kopiert hast wird in einer Userform verwendet, und fängt in der ersten leere Zeile im aktiven Blatt an - also nicht auf einem festen Blatt wie z.B. Tabelle1 oder Tabelle2 oder oder oder.
Danach werden die Spalten 1 bis 5 mit den Inhalten aus den Me.txtXXX-Feldern gefüllt wird.
Jedes mal wenn der Code ausgeführt wird kommt eine Zeile in der Tabelle dazu

Ich versuchs mal mit deinem Beispiel zu übersetzten

intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 1).End(x1Up).Row + 1
hier werden die genutzten Zeilen des aktiven Blattes ermittelt, dann geht der Code in die letzte Zeile und noch eine tiefer = erste leere Zeile

ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txtCompany
ActiveSheet -> aktives Blatt im Hintergrund. Alternative: Worksheets("Tabelle1")
.Cells(intErsteLeereZeile, 1).Value
ist der Zellbezug -> intErsteLeereZeile also die Zeilennummer. Das ", 1" steht für die erste Spalte - A-Spalte. ".Value" hiermit wird ein Wert übergeben.
Me.txtCompany
Da kommt der zu ermittelnde Wert her.

Und du hättest gern eine Eingabemaske mit einem festen Bezug, der jedesmal überschrieben wird?
Dann brauchst du sowas in der Art:
- eine Userform
- einen Commandbutton
- die entsprechenden Textboxen (txtCompany; txtName; usw...)

dann einen VBA-Code der durch drücken des Commandbuttons gestartet wird:
Beispiel:

Private Sub cmdBtnSchreibwas ()

Me.txtCompany = [Tabelle1!A13].Text
Me.txtName = [Tabelle1!A14].text
etc.

End Sub


Ist jetzt natürlich nur grob beschrieben, aber mit etwas Kreativität leicht anpassbar.
 
@PZTA
Dass dein Code der Anfrage gegenüber ziemlicher Unsinn ist weißt du hoffentlich? (2 x Range("A17"); damit spaltenweises Erfassen…)


@vollbase
So einfach ist das nicht. Wenigstens nicht flott hinprogrammiert.
Zu deinem Codefragment gehört in der Tat die besagte UserForm - die muss die erwähnten Textfelder zur Eingabe haben und einen Button der die Eingaben »abschickt« (die sicherlich sinnvollste Bedienführung). Ich vermute, so eine UserForm existiert noch nicht?
Der Code ist so weit in Ordnung. Er ermittelt die nächste leere Zeile (präzise: er sucht die erste besetze von unten her und nimmt dann eine Nummer höher). Dann wird in diese Zeile eingetragen. Die UserForm aber jeweils zu Ent-Laden müsste nicht sein; sie kann, wenn man denn mehrere Datensätze eingeben will offen bleiben und sich erst mittels eines Beendeknopfes oder dem Schließkreuzchen diskret zurückziehen.

Persönliche Frage: wenn du nur Daten sammeln willst, warum benutzt du nicht eine Datenbank (und sei es BASE aus OpenOffice)? Die hat bequeme Möglichkeiten Ein- und auch Ausgabeformulare zu bauen, viel müheloser im Umgang als eine Excel-UserForm.

CN8


Oh, da war ich wohl etwas später dran ;)
 
cumulonimbus8 schrieb:
@PZTA
Dass dein Code der Anfrage gegenüber ziemlicher Unsinn ist weißt du hoffentlich? (2 x Range("A17"); damit spaltenweises Erfassen…)

Sorry aber nö das weis ich nicht - Wenn man aber "A17" mit "A13" ersetzt dann werden die von Themenstarter angesprochenen Zellen ausgefüllt vielleicht nicht die Lösung aber es funktioniert - finde der Unsinn (abgesehen vom falschen Zellbezug) hält sich in Grenzen.
 
@Coldframe

also Userform habe ich mit labels und Eingabe Fenster sprich txt...

cmd button habe ich auch

Ich weiß nur nicht was ich genau als Code schreiben muß.
Hier mal der kpl. Code den ich z.Z auf der Userform habe.

Code:
Private Sub cmdAbbruch_Click()
'Schließt das Formular "Adressfenster"
Unload frm_addy_FF
End Sub

Private Sub cmdStart_Click()
'Übernimmt die eingetragenen Werte und chließt das Formular "Adressfenster"

Was muß hier rein ???

Unload frm_addy_FF
End Sub


Private Sub UserForm_Click()

End Sub

@PZTA
also dein Code würde an sich schon einmal funktionieren danke dafür. Bei deinem Code habe ich nur das problem das mein formular wie folgt aussieht

formuar.JPG

da muß ich dann noch zusätzlich auf Accept klicken dann kommen lauter Popup fenster. Also ich sage mal so wenn das mit einem Klick weniger geht finde ich die Lösung sogar noch viel besser als bisher
 
Also wenn dein(e)
- Textfelder "txtCompany; txtName; txtStreet; txtZipcode; txtCity"
- Commandbutton "cmdStart"
- Tabellenblatt "Tabelle1"
heißen, dann sollte dies hier funktionieren:

Code:
    Private Sub cmdAbbruch_Click()
    'Schließt das Formular "Adressfenster"
    Unload frm_addy_FF
    End Sub
     
    Private Sub cmdStart_Click()

    [Tabelle1!A13].Text = Me.txtCompany
    [Tabelle1!A14].Text = Me.txtName
    [Tabelle1!A15].text = Me.txtStreet
    [Tabelle1!A16].text = Me.txtZipcode
    [Tabelle1!A17].text = Me.txtCity
 
    Unload frm_addy_FF
    End Sub
     

    Private Sub UserForm_Click()
     
    End Sub

Das "Me." bedeutet nur, dass die Felder innerhalb einer Userform angesprochen werden.

Ich seh gerade in meinem ersten Post hier hatte ich die Felder vertauscht, da wuden die Texte aus der Tabelle in die Userform geholt - Sorry
 
Zurück
Oben