Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Friedrichroda /
Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.

Bei Problemen mit der Erreichbarkeit der Foren bitte den Link / Favoriten prüfen und ersetzen. Dazu über die Startseite ins gewünschte Forum wechseln und zu den Favoriten hinzufügen. Excel ist derzeit z.B. unter http://www.clever-excel-forum.de/forum-2.html zu erreichen.


VBA Werte Tabelle über UF ändern
#1
Hallo zusammen,

Brauch mal kurz Hilfe.

UF öffnet mit 14 Textboxen, bei Click in eine Listboxzeile (Anzahl 6 Spalten) wird der Wert in die ersten 6 Textboxen übergeben. Die leeren Textboxen werden nun mit Werten gefüllt und bei Click auf Button soll der Datensatz aus Listbox die Zeile um die Werte der Textboxen 8-14 hinzufügen.

Bei meinem Versuch schreibt er immer die Werte in die zweite Zeile der Tabelle, wo liegt mein Fehler?

Code:
Private Sub cmd_ändern_Click()
'Datensatz ändern
Dim lng As Long
Dim i As Integer

lng = Sheets("Depot").Range("A1048576").End(xlUp).Offset(1, 1).Column
With frm_Depot
Sheets("Depot").Activate
Cells(lng, 1).Value = .TextBox1.Value
Cells(lng, 2).Value = .TextBox2.Value
Cells(lng, 3).Value = .TextBox3.Value
Cells(lng, 4).Value = .TextBox4.Value
Cells(lng, 5).Value = .TextBox5.Value
Cells(lng, 6).Value = .TextBox6.Value
Cells(lng, 7).Value = .TextBox7.Value
Cells(lng, 8).Value = .TextBox8.Value
Cells(lng, 9).Value = .TextBox9.Value
Cells(lng, 10).Value = .TextBox10.Value
Cells(lng, 11).Value = .TextBox11.Value
Cells(lng, 12).Value = .TextBox12.Value
Cells(lng, 13).Value = .TextBox13.Value
Cells(lng, 14).Value = .TextBox14.Value
End With
End Sub

Danke schon mal im Voraus!
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#2
Hallo,

Code:
lng = Sheets("Depot").Range("A1048576").End(xlUp).Offset(1, 1).Column

Column heißt auf Deutsch Spalte. Ergo wird bei dir in dieser Codezeile immer die 2 zurückgegeben. Mache es so

Code:
lng = Sheets("Depot").Range("A1048576").End(xlUp).Row +1

wobei ich anstatt der Zahl immer Rows.Count nehmen würde also so

Code:
lng = Sheets("Depot").Cells(Worksheets("Depot").Rows.Count, 1).End(xlUp).Row +1
Gruß Stefan
Win 7 / Office 2007
to top
#3
Hi Stefan,

kurze Frage: steht das
Code:
Row +1
nicht dafür, dass in eine neue Zeile der Datensatz in die Tabelle geschrieben wird oder irre ich?

Ergänzung: ja, wie ich vermutet hatte, es wird eine neue Zeile an die bestehenden angefügt.

Mein Ansatz sollte sein: in der Listbox1 wird eine Zeile angeklickt, diese Werte werden in die ersten 6 von 14 Textboxen geladen, dann möchte ich in die Textboxen 7-10 Werte eingeben (Textbox 11-14 sind berechnende, Werte ergeben sich aus Textbox 7-10. Dann Klick auf Butten und die bereits bestende Zeile soll um die Daten der übrigen Werte aus Textbox 8-14 ergänzt werden. Also keine neue Zeile ansteuern sondern bestehende Zeile ergänzen.
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#4
Hallo Bernd,

Du irrst dich nicht.
Gruß Stefan
Win 7 / Office 2007
to top
#5
Hi Stefan,

hatte vorherigen Beitrag gerade ergänzt. Schau mal kurz drauf.
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#6
Hallo Bernd,

ergänzen oder den Zellinhalt ändern? Wenn ändern: Warum änderst Du die Werte nicht in den Textboxen 1 bis 7 und schreibst sie dann zurück?
Gruß Stefan
Win 7 / Office 2007
to top
#7
Hallo Stefan,

hab mal ne Beispielmappe eingestellt.

1. UF Depot öffnen
2. Listboxzeile anklicken und Texboxen 1-6 füllen sich
3. leere Textboxen füllen. Hier Testdaten: Kaufdatum 01.12.2013, Kaufkurs 100,00, Stück 1000, Trailing SL 10. Die restlichen Textboxen sind Berechnende, aber soweit bin ich noch nicht. Gib irgend etwas ein.
4. Klick auf Button = Tabelle Depot und die Listbox sollen aktualisiert werden.

Ich hoffe, dass es jetzt verständlicher war.


Angehängte Dateien
.xlsm   BKTest_2.xlsm (Größe: 23,37 KB / Downloads: 16)
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#8
Hallo Bernd,

teste mal (da die Textboxen nur Text liefern, wandle ich die entsprechenden Werte um)

Code:
Private Sub cmd_ändern_Click()
'Datensatz ändern
Dim lng As Long

If ListBox1.ListIndex = -1 Then MsgBox "Nichts ausgewählt!", vbInformation: Exit Sub
lng = ListBox1.ListIndex + 2
'lng = Sheets("Depot").Cells(Worksheets("Depot").Rows.Count, 1).End(xlUp).Row
With frm_Depot
Sheets("Depot").Activate
Cells(lng, 1).Value = .TextBox1.Value
Cells(lng, 2).Value = .TextBox2.Value
Cells(lng, 3).Value = .TextBox3.Value
Cells(lng, 4).Value = .TextBox4.Value
Cells(lng, 5).Value = .TextBox5.Value
If IsNumeric(.TextBox6.Value) Then Cells(lng, 6).Value = CDbl(.TextBox6.Value)
If IsDate(.TextBox7.Value) Then Cells(lng, 7).Value = CDate(.TextBox7.Value)
If IsNumeric(.TextBox8.Value) Then Cells(lng, 8).Value = CCur(.TextBox8.Value)
If IsNumeric(.TextBox9.Value) Then Cells(lng, 9).Value = CLng(.TextBox9.Value)
Cells(lng, 10).Value = .TextBox10.Value
Cells(lng, 11).Value = .TextBox11.Value
Cells(lng, 12).Value = .TextBox12.Value
Cells(lng, 13).Value = .TextBox13.Value
Cells(lng, 14).Value = .TextBox14.Value
End With
UserForm_Initialize
End Sub
Gruß Stefan
Win 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
  • Bernie
to top
#9
Hallo Stefan,

Funktioniert toll, genauso wie ich mir es vorgestellt hatte. Du bist einfach "SPITZE" 23

Ein schönes Wochenende wünsche ich Dir!!!
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste