Avatar billede jokerper Nybegynder
07. marts 2009 - 16:56 Der er 12 kommentarer og
1 løsning

Hjælp til VBA - excel

Jeg har brug for lidt hjælp til dette:

Private Sub ComboBox46_Change()
    Sheets("Ark1").Range("B44").Value = UserForm1.ComboBox46.Text
End Sub

Jeg vil så gerne have den til at skrive til B60 og bare derned af
men den skal helst tjekke om forekomsten findes hvis den findes skal den ikke tilføjes.

Så den kan blive opdateret med det indhold som har været skrevet i ned.

Private Sub ComboBox46_Change()
    Sheets("Ark1").Range("B44").Value = UserForm1.ComboBox46.Text
    Sheets("Ark1").Range("B60").End(xlDown).Offset(0, 0) = UserForm1.ComboBox46.Text
End Sub


Det er hvad jeg foreløbig er kommet fremtil, så mangler jeg noget med at sortere mv.
Avatar billede lerskov Praktikant
07. marts 2009 - 21:16 #1
Prøv denne...

Public Sub combobox46_change()

Sheets("Ark1").Range("B44").Value = UserForm1.combobox46.Text

sog = Userform1.combobox46.Text
r = Sheets("Ark1").Range("B60").End(xlDown).Row
For Each cell In Range("B60:B" & r)
    ant = 0
    If sog = cell.Value Then ant = ant + 1
    Next
If ant = 0 Then Sheets("Ark1").Range("B60").End(xlDown).Offset(1, 0) = UserForm1.combobox46.Text

   
End Sub
Avatar billede jokerper Nybegynder
08. marts 2009 - 16:58 #2
Hejsa lidt forsinket, men jeg har fået kigget på det og det virker ikke helt efter min hensigt. (jeg er nok bare en perle) men den mangler at tage de indskrevne ord ind i comboboxen.


Hvis du forstår hvad jeg mener ellers skriv, så må jeg forklare mig bedre ud fra din opfattelse.
Avatar billede lerskov Praktikant
08. marts 2009 - 17:50 #3
De vil have hele listen ind í comboboxen, ved opstart af userform? og hvis det ønskede ikke findes kan man selv taste det. Er det korrekt forstået... ?

Jeg kigger på det når lille pigen er lagt i seng.
Avatar billede jokerper Nybegynder
08. marts 2009 - 19:04 #4
Oprindeligt ville jeg have at alle comboboxene i alt ti, skulle inde holde listen som er sorteret, således at hvis man tidligere har skrevet odret ville den selv foreslå det.

Men der skal helst heller ikke være uendeligt, men gerne 50-75 unikke ord tilknyttet. Og til sidst så skal den selvfølgelig tilføje listen som valg mulighed i comboboxene.
Avatar billede lerskov Praktikant
08. marts 2009 - 20:11 #5
Ved ikke om jeg har forstået det rigtig. men prøv denne?

Private Sub ComboBox46_afterupdate()


Sheets("Ark1").Range("B44").Value = UserForm1.ComboBox46.Text

sog = UserForm1.ComboBox46.Text
r = Sheets("Ark1").Range("B60").End(xlDown).Row
For Each cell In Range("b60:b" & r)
    ant = 0
    If sog = cell.Value Then ant = ant + 1
    Next
If ant = 0 Then Sheets("Ark1").Range("B60").End(xlDown).Offset(1, 0) = UserForm1.ComboBox46.Text

  Range("b60").End(xlDown).Select
    Selection.Sort Key1:=Range("B60"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
       
End Sub

Private Sub UserForm_activate()

r = Range("B65000").End(xlUp).Row
    ActiveWorkbook.Names.Add Name:="combo", RefersToR1C1:=Range("b60:b" & r)
   
    With ComboBox46
        .RowSource = "combo"
        .ListIndex = "0"
    End With

End Sub
Avatar billede jokerper Nybegynder
08. marts 2009 - 21:22 #6
Det ser fint ud og viker, men jeg har jo 13 comboboxe som gerne skulle virke med denne kode???

Hvordan gør jeg det?
Avatar billede lerskov Praktikant
08. marts 2009 - 21:30 #7
Hvis de alle ligger i samme userform, kopier du bare

With ComboBox46 'og ændre disse til den rigitge nummer
        .RowSource = "combo"
        .ListIndex = "0"
    End With

--------------
Denne linie skal også ligge pr. combobox. men ændre den til dette.
Private Sub ComboBoxXX_afterupdate()

call update

end sub

-----

Denne indsættes sammen med alt den anden kode.

Private function update()


Sheets("Ark1").Range("B44").Value = UserForm1.ComboBox46.Text

sog = UserForm1.ComboBox46.Text
r = Sheets("Ark1").Range("B60").End(xlDown).Row
For Each cell In Range("b60:b" & r)
    ant = 0
    If sog = cell.Value Then ant = ant + 1
    Next
If ant = 0 Then Sheets("Ark1").Range("B60").End(xlDown).Offset(1, 0) = UserForm1.ComboBox46.Text

  Range("b60").End(xlDown).Select
    Selection.Sort Key1:=Range("B60"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
       
End function

Håber dette giver mening
Avatar billede jokerper Nybegynder
08. marts 2009 - 22:16 #8
Det virker men jeg kan se det ikke kun er unikke poster, er der en måde hvorpå jeg kan få det? Evt. en indbygget funktion i excel.
Avatar billede jokerper Nybegynder
08. marts 2009 - 22:19 #9
Avanceret filter klarede den opgave, så læg et svar og du får dine meget velfortjente point, det er ikke altid man får hjælp som bare virker første gang.

Ved et problem man ikke kender så meget til.
Avatar billede lerskov Praktikant
08. marts 2009 - 22:21 #10
består den liste du har ikke unikke værdier? Den tillader jo ikke at du indsætte noget 2 gange!!

Ellers må jeg lige kigge på den i morgen.
Avatar billede lerskov Praktikant
08. marts 2009 - 22:46 #11
super, et svar.. Altid rart at kunne hjælpe.
Avatar billede jokerper Nybegynder
08. marts 2009 - 23:39 #12
Ja, desværre var jeg vist lidt for hurtig. Men den updated med de samme informationer så jeg ikke kunne gemme dem på regnearket.

Fordi jeg har en beregning knap som aktiveres og så læste den værdierne ind igen. Noget med screenupdating = True.

Det ser ellers rigtigt ud mangler bare lige at få det til at spille.
Avatar billede lerskov Praktikant
09. marts 2009 - 08:43 #13
Forstår ikke helt hvad du mener...
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