Hallo,
ah ja, habs mir schon gedacht, böse Falle: Du schreibst in den gleichen Bereich, den Du per Rowsource-Eigenschaft zugewiesen hast, dadurch wir das Click_Event der Listbox gefeuert...
2 Möglichkeiten: Du initialisierst die Listbox per Zuweisung der Werte über die List-Eigenschaft, oder folgendes, Du setzt einen booleschen Flag:
Option Explicit
Private mblnNoClick As Boolean
Private Sub UserForm_Initialize()
ListBox_Arbeitspaket.RowSource = Worksheets("Rohdaten").Range("A2:G39").Address(External:=True)
End Sub
Private Sub ListBox_Arbeitspaket_Click()
If Not mblnNoClick Then
With ListBox_Arbeitspaket
TextBox_BudgetPostenNr = .List(.ListIndex, 0)
TextBox_Teilprojekt = .List(.ListIndex, 1)
TextBox_Arbeitspaket = .List(.ListIndex, 2)
ComboBox_Kostenart = .List(.ListIndex, 4)
TextBox_Details = .List(.ListIndex, 5)
TextBox_Geplante_Kosten = .List(.ListIndex, 6)
End With
End If
End Sub
Private Sub ComboBox_Kostenart_Change()
ComboBox_Kostenart.RowSource = Worksheets("Kreditoren und TP Zuordnung").Range("E3:E6").Address(External:=True)
End Sub
Private Sub CommandButton_Eintragen_Click()
Dim Tabellenende As Integer
Dim x As Integer
mblnNoClick = True
Tabellenende = Application.WorksheetFunction.CountA(Worksheets("Rohdaten").Range("A:A"))
For x = 2 To Tabellenende
If Worksheets("Rohdaten").Cells(x, 1) = TextBox_BudgetPostenNr.Text Then
MsgBox "Prüfung auf Zeilennr. positiv"
Worksheets("Rohdaten").Cells(x, 3) = TextBox_Arbeitspaket.Text
MsgBox "erster Wert eingetragen"
Worksheets("Rohdaten").Cells(x, 5) = ComboBox_Kostenart.Text
MsgBox "zweiter Wert eingetragen"
Worksheets("Rohdaten").Cells(x, 6) = TextBox_Details.Text
Worksheets("Rohdaten").Cells(x, 7) = TextBox_Geplante_Kosten.Text
Exit For
End If
Next
MsgBox "Die Änderung wurde eingetragen."
Unload Me
End Sub
Private Sub CommandButton_Abbrechen_Click()
Unload Me
End Sub
Gruß,
|