06. september 2004 - 09:12Der er
18 kommentarer og 1 løsning
Listbox med ListStyleOption
Project: Ark med 600 rækker, skal kunne vælge vilkårlige rækker, indtaste timer som lægges til markede rækker.
Jeg har lavet en listbox med MultiSelectMulti og ListStyleOption, som peger på arket, det virker helt perfekt, men der er et problem, hvordan får jeg "check box" til at forblive markerede, det er tit de samme rækker der skal markeres. Jeg har pløjet John Walkenbach's bog om VBA igennem, desværre uden held. Alternativt vil jeg gerne vide om man kan checke en række med alm. check box for at se hvike der er "tændt"
Har før lavet programmet med alm. check box, men det bliver utroligt sløvt. (900 linier med begynder kode! er skrap kost for Excel) Håber i kan hjælpe På forhånd tak.
måske har jeg ikke forstået det korrekt, men... 1. commandbutton chekker om dit din række er selected. Dette lægges over i en fælles variabel SelectedItems()
2.commandbutton laver en reload af de værdier i listboxen der var markeret da commandbutton1 blev trykket på.
Dim selecteditems() Private Sub CommandButton1_Click() ReDim selecteditems(ListBox1.ListCount - 1) For I = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(I) = True Then selecteditems(I) = True End If Next I End Sub
Private Sub CommandButton2_Click() For I = 0 To ListBox1.ListCount - 1 ListBox1.Selected(I) = selecteditems(I) Next End Sub
En ListBox hvor brugeren indtaster et antal timer og selecter de rækker hvor timerne skal addes. Jeg har en CommandButton som chekker hvilke rækker der er select og adder de timer i de celler som jeg ønsker. Problemet med CheckBoxene i min ListBox hvor jeg bruger ListStyleOption=true, er at disse CheckBoxe ikke beholder markeringen, men at brugeren skal markere dem igen næste gang. Jeg vil helst bruge en listbox med MultiSelectMulti=true og ListStyleOption=true da det kan gøres med ca.30 linier kode. Håber du forstår problemet, ellers bare spørg igen, i kommer med i min aftenbøn i en hel uge, hvis i kan hjælpe. Jeg checker lige din ide med commandbutton2, måske hvis jeg kalder den "opdater" hmmmm
Ja, Userformen bliver åbnet ca 1 gang om dagen. Med "public" mener du at programmet kan have indflydelse på andre åbne excel programmer? Jeg vedlægger lige koden til min commandbutton, måske hjælper det, du får tak for din stædighed, tro mig, det er værdsat.
Private Sub CommandButton1_Click() Dim x As Long, rng As Range Set rng = ActiveSheet.UsedRange Application.Calculation = xlCalculationManual On Error Resume Next For x = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(x) Then rng(x + 1, 3) = rng(x + 1, 3) + AddHrs.Text If ListBox1.Selected(x) Then rng(x + 1, 2) = rng(x + 1, 2) + AddHrs.Text Next Application.Calculation = xlCalculationAutomatic End Sub
Det har ingen inflydelse på andre åbne ark. Sålænge dette ark er åbent vil det huske de sidst selectede items. Dvs at når userformen startes igen vil et tryk på commandbutton2 (reload) selecte de linier der var selected sidste gang man trykkede på på CommandButton1 Koden til commandbutton2 kunne også lægger under Userform1_Activate eller Userform1_Initialize, så vil den automatisk have selected de samme items som sidst
denne her til commandbutton1 click
Private Sub CommandButton1_Click() Dim x As Long, rng As Range Set rng = ActiveSheet.UsedRange ReDim selecteditems(ListBox1.ListCount - 1) Application.Calculation = xlCalculationManual On Error Resume Next For x = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(x) = True Then rng(x + 1, 3) = rng(x + 1, 3) + [AddHrs] rng(x + 1, 2) = rng(x + 1, 2) + [AddHrs] selecteditems(x) = True End If Next Application.Calculation = xlCalculationAutomatic End Sub
Denne her til Reload Private Sub CommandButton2_Click() For I = 0 To ListBox1.ListCount - 1 ListBox1.Selected(I) = selecteditems(I) Next End Sub
Beklager Bak, men den fjerner stadig markeringerne i listboxen når timerne addes, de kommer ikke tilbage når listboxen åbnes igen, gør jeg noget forkert? hvis det er bedre med en commandbutton er det helt ok. Jeg har office 2000 pro
Det stiller jeg mig lidt uforstående overfor. Jeg har testet i både xl2000 og excel XP. Den virker fint i begge versioner. Er du sikker på at det er den rigtige du har åbnet :-)
Har lige kigget på den sidste version du sendte, hænger stadig i lysekronen, det begynder virkelig at ligne noget!! Oh du store altvidende limsten, jeg bøjer mig ydmygt i støvet for dine fødder. Du skriver du ikke er helt færdig, hvad kan du ellers finde på.
Jeg ville jo gerne have dem samlet, men jeg har ikke mulighed for at sortere i arket, da det er låst. En anden mulighed er også at vise dem seperat i en anden listbox, men lad os nu se. Jeg skal nu nok i seng nu :-)
Ikke nødvendigt, da items bliver lagt ind i grupper, de items der vælges er ikke fra samme gruppe, det er kun overskriften jeg har låst, da der ellers går ged i den i listboxen, hvis de pillefingre ændrer på kolonne bredden, der kan indtastes som man vil i selve arket.
Ok, her er et svar. Jeg har forbedret funktionerne en smule, så jeg sender et nyt, når jeg kommer hjem :-)
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.