AW: Zeile aus Tabelle und Listbox löschen
Roland
Hallo Andre,
ich habe den Eindruck, dass Du Dich hier hoffnungslos übernimmst und dies durchaus auch siehst.
Da zumindest Oberschlumpf die Antwort zum jetzt angefragten Detail (Synchronisieren von Tabelle, Listbox und Array)
auch interessiert (ich unterstelle mal, dass Userform1 die richtige Bezeichnung ist, ansonsten überall anpassen):
1. in ein allgemeines Modul
Option Explicit
Option Private Module
Public arrList
Public Const c As Long = 5&
Sub Read_array()
Dim l As Long
l = Worksheets(2).Cells(1, 1).End(xlDown).Row
With Worksheets(2)
arrList = .Range(.Cells(1, 1), .Cells(l, c))
End With
For l = LBound(arrList) To UBound(arrList)
arrList(l, c) = l
Next
End Sub
Sub Fill_Listbox()
Dim l As Long, m As Long, n As Long, o As Long
For l = LBound(arrList) To UBound(arrList)
If arrList(l, 3) > 0 Or arrList(l, 4) > 0 Then m = m + 1
Next
If m = 0 Then UserForm1.ListBox1.Clear: Exit Sub
ReDim arrTmp(m - 1, c)
For l = LBound(arrList) To UBound(arrList)
If arrList(l, 3) > 0 Or arrList(l, 4) > 0 Then
For n = 1 To c
arrTmp(o, n) = arrList(l, n)
Next
o = o + 1
End If
Next
With UserForm1.ListBox1
.Clear
.ColumnCount = c
.ColumnWidths = ";;;;;0"
.List = arrTmp
End With
Erase arrTmp
End Sub
2. in die Userform
Option Explicit
Private Sub UserForm_Initialize()
Read_array
Fill_Listbox
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim l As Long
With ListBox1
l = .ListIndex
If .ListCount = 0 Then Exit Sub
Worksheets(2).Rows(.List(.ListIndex, c)).Delete
TextBox5.Text = .List(.ListIndex, 3)
TextBox7.Text = .List(.ListIndex, 2)
TextBox8.Text = .List(.ListIndex, 1)
Erase arrList: Read_array
If .ListCount > 1 Then
Fill_Listbox
Else
TextBox5.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
.Clear
Exit Sub
End If
If .ListCount > l Then .Selected(l) = True Else .Selected(l - 1) = True
End With
End Sub
In VBA kann man einfache Sachen relativ schnell hinbekommen, dies ist aber bereits jetzt keine mehr
und wird mit Sicherheit noch schwieriger, wenn noch nachzulegen sein sollte. Wenns ernsthaft und professionell
weitergehen soll und du primär an der Erstellung einer komplexen Anwendung interessiert bist,
von mir aus gerne, aber dann geht es los mit Fragen wie: warum keine Trennung von Daten und Code, muss es
wirklich VBA sein, wo ist das Pflichtenheft usw. Nach deren Beantwortung wird erst abschätzbar, was an zu
honorierendem Aufwand drin steckt. Wenn du aber "nur spielen" willst, ohne den Dingen auf den Grund gehen
zu wollen, wars das jetzt endgültig von meiner Seite. Es gibt im Internet genügend verfügbare Ressourcen, auf die Du zugreifen kannst.
@Oberschlumpf
Im Prinzip gebe ich dir Recht, aber hier war der Nachbau der Tabelle wirklich in einer Minute gemacht,
zumal Du Dich ja auch schon im ersten Posting äußertest und damit das Problem kanntest.
Ein friedliches Miteinander aus Berlin von
Roland Hochhäuser