Avatar billede swamboo Seniormester
13. december 2003 - 16:44 Der er 6 kommentarer og
1 løsning

Hjælp til lavning af "auto"-form

Jeg har bøvlet nogle timer med at få lavet en form hvor den selv tilføjer nogle objekter.

For i = 1 to antal

Opret en "label" ved navn "label" & i
opret en "combobox" ved navn "combobox" & i
(jeg tildeler den værdi senere - men hvis det er lige så let at gøre under opstarten ligger værdierne i a15:a19)

Next i

Jeg ville gerne hvis de kunne stå under hinnanden 2 og 2:
label combo
label combo
osv.

Jeg har forsøgt med en control.add men den vil ikke...
13. december 2003 - 18:52 #1
Her er et eksempel:


    Dim lCount As Long
    Dim oCtl As Control
   
    For lCount = 1 To 5
        Set oCtl = Me.Controls.Add("Forms.Label.1", "Label" & CStr(lCount), Visible)
        With oCtl
            .Left = 6
            .Height = 12
            .Top = 9 + (lCount * 15) - 15
            .Width = 60
            .Caption = "Label " & CStr(lCount)
        End With
        Set oCtl = Me.Controls.Add("Forms.ComboBox.1", "ComboBox" & CStr(lCount), Visible)
        With oCtl
            .Left = 66
            .Height = 15
            .Top = 6 + (lCount * 15) - 15
            .Width = 78
            .AddItem "ComboBox " & CStr(lCount)
            .ListIndex = 0
        End With
    Next lCount
   
    Set oCtl = Nothing
Avatar billede swamboo Seniormester
14. december 2003 - 00:38 #2
Hej Flemming.

Det virker helt som jeg gerne vil have det til, men jeg kan ikke finde ud af at få resultaterne ud af variablerne igen.

Jeg trode jeg bare kunne skrive:


    .Offset(1, 0).Value = ComboBox1.Text
eller:
    .Offset(1, 0).Value = ComboBox & CStr(i).Text

og så var det skrevet - men den går ikke...
Nu har du vist mig at putte data IND - kan du så ikke også vise mig at tage data UD???
14. december 2003 - 01:32 #3
For lCount = 1 To 5
    .Offset(1,0).Value = Me.Controls("ComboBox" & CStr(lCount)).Text
Next lCount

Hvis du vælger et tal i et tilfælde, og tekst i et andet tilfælde, og har problemer med at få tallene til at være tal i Excel, så kan det laves således:

For lCount = 1 To 5
    If IsNumeric(Me.Controls("ComboBox" & CStr(lCount)).Text) Then
        .Offset(1,0).Value = CDbl(Me.Controls("ComboBox" & CStr(lCount)).Text)
    Else
        .Offset(1,0).Value = Me.Controls("ComboBox" & CStr(lCount)).Text
    End If
Next lCount
Avatar billede swamboo Seniormester
14. december 2003 - 10:40 #4
SUPER!!! Jeg tester det lidt senere i dag!!
Men som de altid siger i radioen: Er der tid til et lille tillægsspørgsmål??

Kan man styre selve formens størrelse, så den bliver større/mindre hvis der er mange/få linier der bliver listet??
14. december 2003 - 10:50 #5
Selvfølgelig kan du styre Me.Height og Me.Width, men du skal selv lave en noget der regner på, om du bruger mere plads end userformens udgangsstørrelse.
Avatar billede swamboo Seniormester
14. december 2003 - 14:29 #6
Takker igen!! Det var også det svar jeg håbede på (du kan jo ikke vide hvorstort område jeg har/får brug for!!)

Men hold da op hvor falder brikkerne langsomt...

Men NU tror jeg fattede jeg fidusen: ME._?_? styrer hvad der har med forms at gøre.
Jeg har gravet lidt i det nu, og jeg tror jeg er med!!

Mange tak for din store hjælp til at få mig rigtig i gang!!!!
14. december 2003 - 14:37 #7
det var nu så lidt (men sådan er det jo med kendt stof) God fornøjelse
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