Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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 2016 Pro  32bit - Win 10 Pro 64 bit
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.
Antworten 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 10 / Office 2016
Antworten 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 2016 Pro  32bit - Win 10 Pro 64 bit
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.
Antworten Top
#4
Hallo Bernd,

Du irrst dich nicht.
Gruß Stefan
Win 10 / Office 2016
Antworten 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 2016 Pro  32bit - Win 10 Pro 64 bit
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.
Antworten 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 10 / Office 2016
Antworten 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: 25)
Grüße aus Bremen
Bernie

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

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
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.
Antworten 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 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Bernie
Antworten 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 2016 Pro  32bit - Win 10 Pro 64 bit
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.
Antworten Top


Gehe zu:


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