Avatar billede ljm21 Praktikant
11. januar 2005 - 22:18 Der er 15 kommentarer og
1 løsning

Fra tekst- og kombinations-bokse til liste vha. makro

Halløj

Jeg har et indtastningsområde med nogle tekstbokse og kombinationsbokse. Når der er indtastet nogle data i dem skal man vha. af en knap kunne aktivere en makro, der føjer dataene fra felterne til en liste.

Ser frem til nogle kloge svar:-)

Lars
Avatar billede jkrons Professor
11. januar 2005 - 22:54 #1
Hvad mer du med, at de skal føjes til en liste? Hvor har du i givet fald listen.
Avatar billede jkrons Professor
11. januar 2005 - 22:54 #2
mer = mener
Avatar billede ljm21 Praktikant
12. januar 2005 - 07:33 #3
Jeg mener en liste som Excel definerer en liste. Dvs. et seperat ark hvor der er kolonner med en overskrift til hvert datafelt. Lidt databaseagtigt kan man sige.
Avatar billede martin_moth Mester
12. januar 2005 - 11:39 #4
Sheets("Sheet2").Select
Range("B3").Select
ActiveCell.FormulaR1C1 = Text1.value

- og så fremdeles...?
Avatar billede ljm21 Praktikant
12. januar 2005 - 11:51 #5
Forstår jeg koden rigtigt:
Vælg arket "sheet2"
vælg cellen "B3"
Fyld indholdet af tekstboks "Text1" i denne celle

I så fald er det ikke det jeg ønsker. Det skal være sådan at hvis listen ser sådan ud:

NAVN  TLF
anders 113
joakim 999

Så skal indholdet af mine indtastningsbokse blive til en ny post nederst i listen:
indhold af bokse:  Højben 7913

Liste efter send:
NAVN  TLF
anders 113
joakim 999
højben 7913

Håber det afklarede lidt...
Lars
Avatar billede martin_moth Mester
12. januar 2005 - 12:05 #6
Nå ja, så er problemet blot at finde den næste ledige celle. Det kan du gøre sådan:

    Range("A65536").Select
    Selection.End(xlUp).Select

Hvis det er i kolonne A
Avatar billede martin_moth Mester
12. januar 2005 - 12:06 #7
Altså, forudsat, at det du kalder en "liste" blot er et andet sheet (f.eks. "sheet2")
Avatar billede ljm21 Praktikant
12. januar 2005 - 12:07 #8
Super! det prøver jeg at kode lidt på. Vender tilbage senere idag
Avatar billede martin_moth Mester
12. januar 2005 - 12:09 #9
Altså - hvis text1's indhold skal over i den næste ledige celle i kolonne A i arket Sheet2:


Sheets("Sheet2").Select
Range("A65536").Select
Selection.End(xlUp).Select
ActiveCell.FormulaR1C1 = Text1.value

Du kan tilføje

Application.Screenupdate = false

Og

Application.Screenupdate = true

i hhv. top og bund af koden, hvis du ikek vil se skærmen flimre, mens du kopierer
Avatar billede ljm21 Praktikant
12. januar 2005 - 12:23 #10
Det virker næsten som det skal, bortset fra at dataene bliver placeret i den sidste celle der er noget i, i stedet for den første celle der ikke er noget i. Jeg er desværre ikke vant til at kode i VBA, så jeg kan ikke gennemskue hvor jeg skal lægge en til for at komme videre til næste række.... Håber du kan hjælpe
Avatar billede ljm21 Praktikant
12. januar 2005 - 12:25 #11
Og foresten: "Application.Screenupdate" virker ikke. Er det mon fordi min Excel er nummer 2000 istedet for 2003? ikke fordi det er så vigtigt, bare lidt nysgerrig...

Lars
Avatar billede martin_moth Mester
12. januar 2005 - 12:51 #12
Der skal stå application.ScreenUpdating ...

Mht. den forkerte række - brug

Cells(ActiveCell.Row + 1, ActiveCell.Column).FormulaR1C1 = Text1.value


Altså

application.ScreenUpdating = false
Sheets("Sheet2").Select
Range("A65536").Select
Selection.End(xlUp).Select
Cells(ActiveCell.Row + 1, ActiveCell.Column).FormulaR1C1 = Text1.value
application.ScreenUpdating = true


Det er ikke helt køn programmering, men det er du vel ligeglad med - når det ikke er større gør det ikek noget. Ville normalt bruge direkte adresser (cells(i,j)), og så variere på 'i' og 'j' i stedet for at bruge activecell osv.
Avatar billede martin_moth Mester
12. januar 2005 - 12:52 #13
svar
Avatar billede ljm21 Praktikant
12. januar 2005 - 12:57 #14
Jeg løste problemet således:
ActiveCell.Offset(1, 0).FormulaR1C1 = Ark1.Navn.Value

Tusind tak for hjælpen. Smid et svar martin_moth, så du kan få nogle point

Lars
Avatar billede bak Forsker
12. januar 2005 - 12:58 #15
Dette burde også kunne gøre jobbet,




Private Sub CommandButton1_Click()
    'skriv hvor mange boxe der er
    Const lBoxe As Long = 3
    Dim arr(1 To 1, 1 To lBoxe)
    'hent alle data fra textboxene ind i et array
    arr(1, 1) = TextBox1.Value
    arr(1, 2) = TextBox2.Value
    arr(1, 3) = TextBox3.Value
    'overfør resultatet til sidate tomme linie på ark2
    Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Resize(, lBoxe) = arr()
End Sub
Avatar billede bak Forsker
12. januar 2005 - 12:59 #16
sådan kan det gå når man ikke opdaterer :-)
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