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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.