Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1800to1804
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Wert zurückschreiben

VBA Wert zurückschreiben
21.12.2020 07:08:05
Lehmann
Hallo,
ich habe noch nicht lange mit vba zu tun und habe mir nun etwas zusammengebastelt jetzt bin ich allerdings an einen punkt angelangt wo ich nicht mehr weiter komme.
Folgendes:
ich habe eine Tabelle "Lieferanten" und eine mit "Werkzeugen" mit jeweils einer ListBox kann ich in meiner UserForm kann ich einen Lieferanten und ein Werkzeug anwählen danach gebe ich in einer Textbox z.B. den wert 2 an und drücke auf einen ComandButton somit wird mir in eine Textbox die nun noch vorhandene Anzahl vom Ausgewähltem Werkzeug angezeigt und in eine andere Textbox wird mir der Einkaufspreis der zwei entnommenene Werkeuge angezeigt soweit ist das auch alles wie ich es möchte. Nun möchte ich allerdings einmal den Preis dem ausgewähltem lieferanten zuweisen und einmal die nun noch vorhandenen Werkzeuge vom ausgewählem Werkzeug zuweisen und das ganze speichern.
Hier der download meiner Arbeistmappe
https://www.herber.de/bbs/user/142472.xlsm
Private Sub CommandButton1_Click()
ListBox1.BoundColumn = 7
If Not IsNumeric(ListBox1) Or Not IsNumeric(TextBox2) Then Exit Sub
TextBox1 = CDbl(ListBox1.Value) * CDbl(TextBox2.Value)
ListBox1.BoundColumn = 1
TextBox3 = CDbl(ListBox1.Value) - CDbl(TextBox2.Value)
ListBox2.BoundColumn = 3
TextBox1 = CDbl(ListBox2.Value) + CDbl(TextBox1.Value)
End Sub
Private Sub CommandButton2_Click()
Worksheets("Lieferanten").Activate
Worksheets("Werkzeuge").Activate
MsgBox "Fräser wurden gebucht"
ComboBox1 = ""
ComboBox2 = ""
ComboBox3 = ""
TextBox1 = ""
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub CommandButton4_Click()
ListBox2 = ""
ListBox1 = ""
TextBox2 = ""
TextBox1 = ""
TextBox3 = ""
TextBox5 = ""
TextBox4 = ""
End Sub
Private Sub CommandButton5_Click()
ListBox1.BoundColumn = 1
If Not IsNumeric(ListBox1) Or Not IsNumeric(TextBox4) Then Exit Sub
TextBox5 = CDbl(ListBox1.Value) + CDbl(TextBox4.Value)
End Sub

Private Sub Label1_Click()
End Sub
Private Sub ListBox1_Click()
End Sub

Private Sub TextBox1_Change()
End Sub

Private Sub TextBox2_Change()
End Sub

Private Sub TextBox3_Change()
End Sub

Private Sub UserForm_Activate()
Dim iRow As Integer
iRow = Sheets("Lieferanten").Cells(Rows.Count, 4).End(xlUp).Row
UserForm1.ListBox2.RowSource = "Lieferanten!A1:C10" & iRow
End Sub

Private Sub UserForm_Initialize()
Dim iRow As Integer
iRow = Sheets("Werkzeuge").Cells(Rows.Count, 4).End(xlUp).Row
UserForm1.ListBox1.RowSource = "Werkzeuge!A7:Z600" & iRow
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Wert zurückschreiben
21.12.2020 10:06:58
MCO
UserForm1.ListBox1.RowSource = "Werkzeuge!A7:Z600" & iRow ist falsch
Es mus heißen
UserForm1.ListBox1.RowSource = "Werkzeuge!A7:Z" & iRow
Das gleiche hier
UserForm1.ListBox2.RowSource = "Lieferanten!A1:C10" & iRow
Das hier

iRow = Sheets("Lieferanten").Cells(Rows.Count, 4).End(xlUp).Row

mus heißen

iRow = Sheets("Lieferanten").Cells(Rows.Count, 3).End(xlUp).Row

sonst kommt nur 1 Lieferant (in der Beispielliste)
Warum nicht in den gleichen Aufruf geschrieben?
Private Sub UserForm_Initialize()
Dim iRow As Integer
iRow = Sheets("Werkzeuge").Cells(Rows.Count, 4).End(xlUp).Row
UserForm1.ListBox1.RowSource = "Werkzeuge!A7:Z" & iRow
iRow = Sheets("Lieferanten").Cells(Rows.Count, 3).End(xlUp).Row
UserForm1.ListBox2.RowSource = "Lieferanten!A1:C" & iRow
End Sub
Allerdings hab ich beim Eintragen der Lieferantendaten schon gesehen, dass sich gleichzeitig auch die Grundtabelle in der Userform mit ändert. Ist das so gewünscht?
Eintrag bis hierher:
Private Sub CommandButton2_Click()
'Worksheets("Lieferanten").Activate 'Kannst du sparen
Set Rng = Worksheets("Lieferanten").Range("A:A").Find(Me.ListBox2.Text)
Rng.Offset(0, 2) = Me.TextBox2.Value
Worksheets("Werkzeuge").Activate
'Set Rng = Worksheets("Werkzeuge").Range("A:A").Find(Me.ListBox1.Value)
MsgBox "Fräser wurden gebucht"
ComboBox1 = ""
ComboBox2 = ""
ComboBox3 = ""
TextBox1 = ""
End Sub
Für den Eintrag der 2ten Listbox kann ich den Eintrag nicht in der Liste finden, als Wert wird nur der letzte Spalten Eintrag genommen, und der ist nicht eindeutig.
Eindeutig wird es nur mit der Bezeichnung (oder WZ-Nr) + Werkstoff oder einfach nur den Fräsercode
Mein Vorschlag:
Bau die Listbox so um, dass die Einträge mit ausgewählten Spalten in sinnvoller Reihenfolge eingelesen werden.
siehe Recherche: listbox.additem
Dann kann man auf alle Werte der Zeile zugreifen und du kannst das gewählte Werkzeug genauso suchen wie den Lieferanten.
Bau es mal ein und lad es dann wieder hoch, mit Beitrag auf offen.
Gruß, MCO
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige