Avatar billede rotroc Nybegynder
21. marts 2007 - 20:13 Der er 5 kommentarer og
1 løsning

Flytte valgte værdier fra ListBox til et Sheet – Hvordan ?

Hej Eksperter

I min UserForm kan jeg fra en liste i ListBox1 flytte items således de fremkommer i ListBox2. Dette virker OK.

Mit problem er at jeg ikke kan overføre de i ListBox2 valgte værdier til arket ”PrintSheet” når jeg trykker på knappen OK.  PrintSheet er tænkt som en faktura agtig sag der summere brugerens valg og viser dertil tilknyttede priser.



Jeg har foreløbig to krav til hvorledes ListBox2 værdierne skal vises i arket ”PrintSheet”:

1.    Til hver valgt items (certifikattyper)i ListBox2 er der knyttet 3 forskellige priser dvs ListPrice – DirectPrice og NetPrice. Ingen af priserne er at se i ListBox2 ell ListBox1, her er kun tekstbeskrivelse af de forskellige certifikater. Min RowSource til ListBox1 er at finde på arket ”Certificates”, hvor hver CertificateType” er vist i kolonne A i navngiven Range "AvailableCertificates". Tilhørende ”ListPrice” er i kolonne B, ”DirectPrice” i kolonne C og ”NetPrice” i kolonne D.  Ønsket nr. 1 er altså at der på arket ”PrintSheet” vises hvilke certifikater der blev valgt fra ListBox1 over i ListBox2 samt at der nu udfra hver certifikattype fremstår de tre priser efter hinanden dvs i de efterfølgende kolonner.
(har svært ved at se hvorledes man vil kunne vise tilhørende priser vha Index eller Vlookup hvis antallet af valgte certifikater varierer !)

2.    Da der i ListBox2 foreløbig kan stå alt fra 1 til 12 valgte certifikattyper skal der på arket ”PrintSheet” kunne tages højde for de varierende antal rækker der gerne skulle fremstå under hinanden lige som på en faktura. Vil det være en ide at lave navngivne områder for at holde styr på de forskellige certifikater og priser ?

Bemærkninger.
- Properties for ListBox1 og ListBox2 er sat  SingleSelect !

- Sådan refereres til RowSource:
Sub ShowDialog()
'  Tilføjer items til ListBox1
        SelectionForm.ListBox1.RowSource = "Certifikater!" _
        & Sheets("Certifikater").Range("A1").Address & ":" _
        & Sheets("Certifikater").Range("A65536").End(xlUp).Address
              End Sub

-    Sådan overføres værdier fra ListBox1 til ListBox2:
Private Sub AddButton_Click()
    ListBox2.AddItem ListBox1.Value
End Sub

-    Kode til OK knap vil sandsynligvis kunne starte således:
Private Sub OkButton_Click()
Dim i As  Integer
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) = True Then
????????
End If
Next i
????????
End Sub
Er der nogle som kan hjælpe ?
Avatar billede supertekst Ekspert
21. marts 2007 - 23:00 #1
Ja - men først i morgen, hvis OK

Du er velkommen til at sende diverse filer til: pb@supertekst-it.dk
Avatar billede kabbak Professor
21. marts 2007 - 23:30 #2
Prøv denne

Private Sub OkButton_Click()
    Dim i As Integer, Data As Variant, T As Long, X As Integer, RW As Long
    Data = Sheets("Certificates").Range("A1").CurrentRegion
    For i = 0 To ListBox2.ListCount - 1
        For T = 1 To UBound(Data)
            If (Data(T, 1)) = ListBox2.List(i) Then
                RW = Sheets("PrintSheet").Range("A65536").End(xlUp).Offset(1, 0).Row
                For X = 1 To 4
                    Sheets("PrintSheet").Cells(RW, X) = Data(T, X)
                Next X
              Exit For
            End If
        Next T
    Next
End Sub
Avatar billede rotroc Nybegynder
22. marts 2007 - 20:55 #3
kabbak

Det ser ud til at køre OK - Tak for det. Kan
være at jeg senere skal have modificeret lidt, men
indtil nu fint fint. Smider du et svar ?
Avatar billede kabbak Professor
22. marts 2007 - 21:11 #4
et svar ;-))
Avatar billede rotroc Nybegynder
22. marts 2007 - 21:54 #5
Vil studere din kode lidt - håber at jeg må spørge igen.
Fortsat god aften
Avatar billede kabbak Professor
22. marts 2007 - 22:50 #6
du er velkommen
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