Aktualisierung Listenfeld
30.07.2003 13:06:16
Michael
Wäre wirklich froh, wenn mir jemand bei folgendem, schwierigen Problem helfen könnte.
Ich habe ein Tabellenblatt als Datenquelle und über ein Listenfeld (Steuerelement) greife ich auf diese Daten zu: Wenn ein Eintrag ausgewählt wird, nimmt er die ganze Zeile aus der "Datenbank" und fügt diese in die ensprechende Zeile auf einem anderen Blatt ein. (in der selben Datei)
Bis hier funktioniert alles perfekt.
Aber:
Wenn ich einen Wert in der Datenquelle ändere, wird dieser veränderte Wert nicht in die vorher ausgewählten Einträge übernommen.
Gibt es da eine Möglichkeit, dass dieser Wert aktualisiert wird?
Noch mal kurz: Datenquelle > Auswahl über Liste > nimmt ganze Zeile > Werte werden nicht aktualisiert, wenn die Werte in der Datenquelle verändert werden.
Wie kann man diese Werte aktualisieren?
Hier mal mein Code:
Tabelle2:
Private Sub LB_1_Change()
If LB_1.ListIndex = -1 Then Exit Sub
n = Selection.Row
c = Selection.Column
Select Case c
Case 1
Cells(n, c) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 2)
Cells(n, c + 2) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 3)
Cells(n, c + 3) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 4)
Cells(n, c + 4) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 5)
Cells(n, c + 5) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 6)
Cells(n, c + 6) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 7)
Cells(n, c + 7) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 8)
Cells(n, c + 8) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 9)
Cells(n, c + 9) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 10)
Cells(n, c + 10) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 11)
Cells(n, c + 11) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 12)
Cells(n, c + 12) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 13)
Cells(n, c + 13) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 14)
Cells(n, c + 14) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 15)
Cells(n, c + 15) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 16)
Cells(n, c + 16) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 17)
Cells(n, c + 17) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 18)
'Cells(N, C + 18) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 19)
Cells(n, c + 19) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 20)
Cells(n, c + 20) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 21)
'Cells(N, C + 21) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 22)
Cells(n, c + 22) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 23)
Cells(n, c + 23) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 24)
Cells(n, c + 24) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 25)
'Cells(N, C + 25) = Sheets("Daten").Cells(LB_1.ListIndex + 38, 25)
Case 2 '1 steht für Spalte A
Cells(n, c) = Sheets("Daten").Cells(LB_1.ListIndex + 3, 2) 'Zeile 3
End Select
Cells(n, c).Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Zelle As Excel.Range)
n = Zelle.Row
c = Zelle.Column
Anfang:
Select Case c
Case 1 ' steht für Spalte1 ,also Spalte A
Select Case n
Case 185 To 190 'wo die Auswahlliste stehen wird hier Spalte A Zeilen 11 bis 49
Select Case c
Case 1
Case 1 'Cursor in Spalte D
LB_1.ListFillRange = "Daten!Bereich2"
End Select
Case Else
GoTo Ende
End Select
Case Else
GoTo Ende
End Select
LB_1.Top = Selection.Top
LB_1.Left = Selection.Left + Selection.Width + 5
LB_1.ListIndex = -1
LB_1.Visible = True
Exit Sub
Ende:
LB_1.Visible = False 'dadurch verschwindet das Auswahlfenster wenn Spalte A nicht aktiviert ist
End Sub