1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,
 ich habe eine Userform mit mehreren Textboxen. Der Inhalt wird über einen Speicher-Button zeilenweise in einem Tabellenblatt gespeichert. Dabei wird die Zeile immer um 1 erhöht.
Da die Anzahl der Textboxen doch größer wird als gedacht und zwischendurch auch Spalten eingefügt werden, muss das Ganze jetzt auch Spaltenweise über eine Variable laufen.
Ich habe eine Liste, in der die Namen der Spalten und die dazugehörigen Spaltennummern aufgelistet sind.
Aber wie baue ich das jetzt in meinen Speichercode ein?

Meinen SpeicherCode habe ich hier gefunden: https://www.online-vba.de/vba_tutorialuserform.php

Kann mir jemand weiter helfen?

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

hier mal ein Beispiel, wie dein Code zum Speichern der Inhalte der Textboxen aussehen könnte:
[code]Private Sub CommandButton1_Click()

Dim s As Long
Dim lngZeile As Long

'Überschriften stehen in Zeile 1
'Name des Arbeitsblattes anpassen!
With ThisWorkbook.Worksheets("Tabelle1")
 'letzte beschriebene Zeile in Spalte 1 ermitteln und für neune Einfügezeile um eins erhöhen
 lngZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
 'Spalten in Zeile 1 durchlaufen
 For s = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
    'und Spalten durch Vergleich der Überschriften den Textboxen zuordnen
   Select Case .Cells(1, s).Value
      Case Is = "Name (ID)": .Cells(lngZeile, s) = TextBox1.Value
      Case Is = "Telefon": .Cells(lngZeile, s) = TextBox2.Value
      Case Is = "E-Mail": .Cells(lngZeile, s) = TextBox3.Value
   End Select
  
 Next s
 
End With
  
Unload Me
  
End Sub[/code]

Den Namen des Blattes und die Zuordnung der Textboxen zu den Spalten musst du natürlich auf deine Verhältnisse anpassen. Für die übrigen Textboxen kannst du den Code im Bereich Case Is entsprechend dem Beispiel erweitern.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O,
vieleln Dank für deine Antwort.
Leider funktioniert der Code nicht.
Ich habe ihn einmal einzeln für eine neuen CommandButton ausprobiert und auch in die Speicherroutine mit dem Listenfeld eingebaut.
Aber er speichert in beiden Fällen nichts :/
Habe ich was falsch gemacht?
Gruß
Daniel
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Daniel,

das kann ich aus der Ferne leider nicht beurteilen ;-).
Der Code gehört in den Command-Button, mit dem die Daten aus deiner Userform speichern willst. Den Namen der Tabelle, in den die Daten geschrieben werden sollen, sowie die Überschriften, die in dieser Tabelle gesucht werden sollen, musst du natürlich auf deine Verhältnisse anpassen, ebenso wie die Zuordnung der Textboxen zu den Spalten.
Hier mal eine kleine [url=http://filehorst.de/d/celljumr]Beispieldatei[/url].


Ansonsten lade mal eine Beispieldatei (mit deiner Userform) auf einem Hoster deiner Wahl  hoch und poste den Link, damit man sich das mal anschauen kann.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,
ich habe meinen Fehler gefunden…dein Code funktioniert super :) Vielen Dank

Jetzt habe ich aber auch noch mehrere OptionButton auf der UserForm…Wie kann ich die in die Select Case Anweisung einbauen?
Und wie kann man den Inhalt von Text- und Comboboxen und den Optionbuttons (True/false) über Select Case wieder in die UserForm laden (ListBox1_Click() )? Ich kriege das nicht passend umgebaut :/

Ich habe dir eine kleinere Variante meiner Datei einmal hochgeladen:

[url=http://filehorst.de/d/cwdhDflr]Datei von filehorst.de laden[/url]


Vielen Dank für deine Hilfe

Gruß
Daniel
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Daniel,

ich habe gerade mal eben kurz darüber geschaut und ich glaube, du denkst viel zu kompliziert ;-).
Ich werde mal über das Wochenende an deiner Beispieldatei etwas basteln.

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Daniel,

hier ist deine verbesserte Datei: [url=http://filehorst.de/d/cJFHvfnI]Beispiel verbessert[/url]
Ich habe dir einige Anmerkungen in die Kommentare geschrieben.

OptionButtons habe ich in der Userform nicht gefunden, nur eine Textbox ;-). Aber OptionButtons kannst du entsprechend abfragen.

Zum Abschluss noch ein Tipp zur Fehlersuche: [url=http://www.access-basics.de/index.php/Debugging_im_VBA-Editor,_Teil_2.html]Debugging[/url]. Das bezieht sich zwar auf Access, gilt aber auch für Excel.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

Wow super...vielen Dank.
Ich werde mir das morgen mal genauer anschauen.
Sehe gerade, dass die Felder zum ankreuzen nicht Optionbutton, sondern CheckBox heißen ;)
Ich bin VBA Anfänger und mir fehlt der Überblick, was alles möglich ist.

Danke, dass du dir die Zeit genommen hast, um mir zu helfen.

Gruß Daniel
...