Avatar billede friis5 Novice
12. februar 2008 - 17:17 Der er 3 kommentarer og
1 løsning

Dynamisk userform, ændre nemt på listboxe

Hej eksperter.

http://img136.imageshack.us/img136/733/userform1bp9.jpg

Jeg har lige lavet en ganske fin userform (se link ^^) som i praksis gør hvad den skal - dog ville det være optimalt om den dynamisk kunne ændre på Listboxene.

Det er nemlig ikke smart, at man har samme Base Valuta som Valuta man vil analyse (fx ligger USD/USD altid i 1). Det samme gør sig gældende, når man har valgt en valuta til analyse, så måtte den gerne forsvinde fra listboxen (man vil ikke vælge en valuta to gange)

Det hele er lidt svært at se udfra billedet, så jeg har valgt at vedhæfte mit excelark :)

Håber I kan hjælpe mig.

http://home.no/frz/UserForm.v.0.01.xls (højre klik, gem som)
Userformen køres blot med knap1 på det første ark.

Tak for hjælpen :)
Avatar billede word-hajen Nybegynder
12. februar 2008 - 18:08 #1
For at fjerne valuta fra basevaluta efter valg af valuta:

Private Sub lstValuta_Click()
    Dim i As Integer
   
    For i = 0 To Me.lstBaseValuta.ListCount - 1
        If Me.lstBaseValuta.List(i) = Me.lstValuta.Text Then
            Me.lstBaseValuta.RemoveItem (i)
            Exit For
        End If
    Next i
End Sub

Men vær opmærksom på, at får man valgt forkert i valutalisten, så er det altså for sent; værdien er fjernet fra basevaluta.
************

Mht. at fjerne valutaer, når man har udvalgt dem til analyse (tilføjes proceduren cmdTilføj_Click):

Me.lstValg.RemoveItem (Me.lstValg.ListIndex - 1)

Hvis begge skal fjernes, så også tillige:
Me.lstBaseValuta.RemoveItem (Me.lstBaseValuta.ListIndex - 1)

Men der går ged i den, hvis vedkommende så sletter valutaen efterfølgende (så er den nemlig ikke i listerne). Så skal du huske at tilføje den/dem igen.
Avatar billede friis5 Novice
13. februar 2008 - 08:51 #2
Det er en meget fin metode du har opstillet, og en jeg slet ikke havde tænkt på - men når jeg sidder her nu og tænker over en smart måde, så er det måske bedre at læse valutaerne ind i et array, og så for hvert "klik" i userformen opdatere dette array (og derpå lave nye lister til userformen) således at der hele tiden er de rigtige lister tilstede...

Spørgsmålet er om det giver for meget load - men umiddelbart går jeg ikke ud fra dette.
Avatar billede friis5 Novice
13. februar 2008 - 10:15 #3
Hmm efter en del testning synes jeg at denne del kode i mange af mine subs gør det for mig (listerne genereres ved hvert click forfra).

Hvor LstRow (er antallet af valuta'er = 36) og ValArr er et array indeholdende valutaerne.. Den er ikke helt færdig, da jeg stadig ikke rydder op i listen med Base Valuta - men det kommer nu.

Takker for hjælpen dog :)

    For i = 1 To lstValuta.ListCount
        lstValuta.RemoveItem 0
    Next i

    k = 0
    For i = 1 To LstRow
        If ValArr(i) <> frmCorrelation.txtBaseValuta Then
            For j = 0 To lstValg.ListCount - 1
                If ValArr(i) = frmCorrelation.lstValg.Column(1, j) Then
                    k = 1
            End If
            Next j
            If k <> 1 Then
                frmCorrelation.lstValuta.AddItem ValArr(i)
            End If
            k = 0
        End If
    Next i
Avatar billede word-hajen Nybegynder
13. februar 2008 - 17:26 #4
Velbekomme. Sig til, hvis du mangler yderligere "indspark".

Tillader mig lige at lægge et svar.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester