Avatar billede sjomka2001 Nybegynder
25. februar 2010 - 20:07 Der er 10 kommentarer og
1 løsning

Indtastningsskabelon- VBA

HJÆÆÆÆÆLP
Jeg skal have lavet en indtastningsskabelon, som skal køres vha. en makro - og jeg kan simpelthen ikke gennemskue hvordan. Jeg har følgende der skal indtastes;
Nummer (tal)
Enhed (tal)
Delenhed (kan være alt muligt)
Delenheds karakter (kan være enten L eller T)
Delenhedens angivelse (tal f.eks. 2,00)
Delenhedens faktiske stand (tal f.eks. 2,00)
Jeg skulle gerne kunne lave en form for "indtastningsskabelon", hvor man, når man kører makroen, får en besked om at indtaste nummer, enhed, delenhed osv. Når dette er indtastet, skal man blive spurgt om man vil fortsætte. Hvis man svarer Ja, kommer man automatisk til næste række, hvor man gentager det hele. Det vil være perfekt, hvis indtastningen starter i A2.
25. februar 2010 - 20:14 #1
Du skal have lavet dig en userform - det er lidt svært at beskrive her, men du kan se, hvordan man opretter sådan én her
http://www.it-fjernundervisning.dk/Excel_VBA/VBA_Userforms/Forms.aspx
Avatar billede sjomka2001 Nybegynder
26. februar 2010 - 13:46 #2
Det var nu ikke meningen det skulle være så avanceret. Jeg forestiller mig et ark, hvor man sætter curseren i A2 -> vælger markroen og derefter indtaster det man skal. Når man er færdig med at indtaste data i alle inputbokse, bliver man spurgt om man vil fortsætte -> hvis ja, starter det hele forfra igen men denne gang i celle B2 osv. osv. Hvis man svarer nej til at fortsætte stopper makroen bare. Håber det er lidt mere forståeligt?
Avatar billede store-morten Ekspert
27. februar 2010 - 11:32 #3
Denne er ikke så avanceret ;-)

Vil du styre/begræse input, er det userform, som er forslået, du skal ud i.

Sub Indtastningsskabelon()
Dim iResultat1
Dim iResultat2
Dim iResultat3
Dim iResultat4
Dim iResultat5
Dim iSvar

Start:
If Range("A2").Value = "" Then
    Range("A2").Activate
Else
    Range("A2").CurrentRegion.Select
    ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If

Nummer:
    iResultat1 = InputBox("Indtast et Nummer", "Nummer")
    If iResultat1 = vbChancel Then Exit Sub
   
Enhed:
    iResultat2 = InputBox("Indtast en Enhed", "Enhed")
    If iResultat2 = vbChancel Then Exit Sub

Delenhed:
    iResultat3 = InputBox("Indtast en Delenhed", "Delenhed")
    If iResultat3 = vbChancel Then Exit Sub

DelenhedsKarakter:
    iResultat4 = InputBox("Indtast Delenheds karakter", "Delenheds karakter")
    If iResultat4 = vbChancel Then Exit Sub

DelenhedensAngivelse:
    iResultat5 = InputBox("Indtast Delenhedens angivelse", "Delenhedens angivelse")
    If iResultat5 = vbChancel Then Exit Sub

With ActiveCell
    .Offset(0, 0).Value = iResultat1
    .Offset(0, 1).Value = iResultat2
    .Offset(0, 2).Value = iResultat3
    .Offset(0, 3).Value = iResultat4
    .Offset(0, 4).Value = iResultat5
    End With
   
    iSvar = MsgBox("Vil du fortsætte?", vbYesNo)
    If iSvar = vbYes Then GoTo Start
   
End Sub
Avatar billede sjomka2001 Nybegynder
02. marts 2010 - 19:23 #4
Tak til store-morten. Det virker perfekt. Jeg vil meget gerne give dig point, men vil lige høre om du kan hjælpe mig med en enkelt ting mere? Hvordan får jeg kodet vba'en sådan, at der foretages en automatisk beregning i f.eks. resultat 6 af delenhedens karakter minus delenhedens angivelse?

Er det forøvrigt muligt at sætte faste "absolutter" på en given indtastning? Hvis jeg gerne vil have at enhed SKAL tastes med 6 cifre efterfulgt af bindestreg efterfulgt af 2 cifre (f.eks. 123456-78)?
Avatar billede store-morten Ekspert
02. marts 2010 - 23:14 #5
Velbekomme.

Det er desvære ikke så nemt/muligt at validere på den indbyggede inputbox funktion.
Avatar billede store-morten Ekspert
02. marts 2010 - 23:18 #6
"automatisk beregning i f.eks. resultat 6"
Den forstår jeg ikke?

Kikker lige lidt på validering.
Avatar billede sjomka2001 Nybegynder
04. marts 2010 - 18:12 #7
Jeg har modtaget megen god og hjælp til denne. Men jeg har et par tillægsspørgsmål!


Dato:
    iResultat1 = InputBox("Indtast dato", "Dato")
    If iResultat1 = vbChancel Then Exit Sub

Hvordan får jeg, via VBA, formateret en dato til at skulle være dd-mm-yyyy. Og hvordan får jeg brugeren gjort opmærksom på, hvis vedkommende har indtastet forkert format, at vedkommende skal indtaste det som dd-mm-yyyy?
Avatar billede store-morten Ekspert
04. marts 2010 - 21:27 #8
Prøv at sende et regneark til mig.
Adr. under frofil.
Avatar billede sjomka2001 Nybegynder
12. marts 2010 - 17:40 #9
Hej Morten. Du får point for denne. Smid et svar!

Og PS: Hvordan er det nu lige at man giver point?
Avatar billede store-morten Ekspert
13. marts 2010 - 00:56 #10
Nummer #5 er et 'Svar'

Når der er kommet et svar som du kan bruge, så klikker du ud for selve svaret i boksen "Acceptér dette svar". Derefter accepterer du svaret i den boks som dukker frem.
Avatar billede store-morten Ekspert
15. marts 2010 - 19:07 #11
Tak for point :-)
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