17. marts 2008 - 10:17Der er
1 kommentar og 1 løsning
Rekursivt kald af change event af listbox i Excel
Hej eksperter!
Jeg har en (ActiveX) ListBox i et Excel regneark. I listen kan vælges en række komponenter og i toppen findes "Alle" - der vælger alle komponenterne i listen.
Når "Alle" vælges køres change eventen og sætter alle til valgt. Problemet med "Alle" er, at når denne vælges, så bliver change-eventen kørt hver gang en enkelt komponent ændres, og således kaldes koden rekursivt i det uendelige.
Jeg har forsøgt mig med forskellige ting, herunder at sætte Application.EnableEvents = False (og så sætte den til true igen efter mit kald), men dette ændrer ikke noget.
Min ListBox ligger i ark nummer 9, så jeg har også forsøgt: Sheet9.ListBox1.Application.EnableEvents = False, men heller ikke dette virker.
Rem Sæt kolonnen "Beregn" til Falsk For i = 0 To Sheet9.ListBox1.ListCount - 1 Sheet12.Range("Farvand_id_offset").Offset(i, 3).Value = False Next i
flag = False RunEvents = True End Sub Private Sub ListBox1_Change() If flag = False Then flag = True actions End If End Sub Private Sub actions() 'ListBox1_Change() Dim i
Rem Hvis Alle er valgt - sæt alle beregn til SAND If Sheet9.ListBox1.Selected(0) = True Then Sheet9.ListBox1.Selected(0) = False
For i = 1 To Sheet9.ListBox1.ListCount - 1 Sheet12.Range("Farvand_id_offset").Offset(i, 3).Value = True Sheet9.ListBox1.Selected(i) = True Next i Else For i = 0 To Sheet9.ListBox1.ListCount - 1 If Sheet9.ListBox1.Selected(i) = True Then Sheet12.Range("Farvand_id_offset").Offset(i, 3).Value = True Else Sheet12.Range("Farvand_id_offset").Offset(i, 3).Value = False End If Next i End If flag = False End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim i
Rem v/Dobbeltklik slettes alle selections & beregn -> Falsk flag = True For i = 0 To Sheet9.ListBox1.ListCount - 1 Sheet9.ListBox1.Selected(i) = False Sheet12.Range("Farvand_id_offset").Offset(i, 3).Value = False Next i flag = False End Sub
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.