09. september 2005 - 13:27Der er
19 kommentarer og 1 løsning
Tælle macro i Excell
Hej eksperter.
Jeg har fået lavet et Excell ark, hvor man får insat datoen i den celle som er markerede ved at klikke på en knap via en macro.
Kan man også lave en macro som kan indsætte fortløbende nummere 1,2,3.... og som virker i flere faneblade i samme Excell ark?
Så jeg kan trykke på en knap i hvert faneblad, og så kommer det næste nummer i rækken til at stå i den celle som er markerede i det faneblad som jeg har aktivt.
- Klik på en celle i dit ark - i menuen vælger du Indsæt - Indsæt navn - Definer - Skriver navnet (Tæller) - klikker Tilføj - OK. - I den celle du netop har navngivet "Tæller" skriver du det seneste anvendte nummer i din nummerrækkefølge.
- Herefter højreklikker du på arkfanen og vælger Vis programkode - Vælg Insert - Module - Dobbelklik på Modulet og indsæt gibbers kode (uden Private og med nyt navn]:
Sub TællerNr() Dim i As Variant i = Ark1.Range("Tæller") + 1 ActiveCell.Value = i Ark1.Range("Tæller") = i End Sub
- I din menubjælke vælger du nu - Vis - Værktøjslinjer - Tilpas - Under fanen [Kommandoer] vælger du [Makroer] - Træk den brugerdefinerede knap på i en af dine værktøjslinjer og slip - Klik på knappen [Rediger markering] og vælge [Tildel makro] - Vælg makroen TællerNr og klik OK
Nu skulle du kunne markere en hvilken som helst celle i din Workbook (med undtagelse af den celle du har navngivet "Tæller") og klikke på din ny menuknap, hvorefter det næste tal i rækken vil blive indsat.
Det virker fint. Men så er det næste problem at funktionen skal bruges på mit arbejde i produktionen, hvor vi ikke har retigheder til at oprette knapper i værktøjslinien. Kan denne funktion ikke laves som en knap på selve arket, hvis du forstår hvad jeg mener?
Hmm... er det ikke lidt voldsomt at bruge en makro til at tilføje et enkelt nummer i nogle ark ? ;))
Problemet er at du skal oprette en knap i hvert ark, når du ikke kan placere den centralt på en menu. Har du kun en knap i ét ark, skal du angive hvilket ark/celle du ønsker det fortløbende nummer når du bruger knappen. Det er ikke nogen besparelse.
Det ser for mig ud som om ovenstående makro opdaterer cellen Tæller hver gang du kører makroen. Når du fx. får tallet 4 ind i ex. ark4, så vil cellen Tæller i ark1 også få nummeret 4.
Makroen herunder gemmer sidst indtastede nr. nederst i ark1 (forudsat du gemmer arket ved afslutning), så du kan fortsætte nummerserien næste gang du åbner arket.
Sub TællerNr() Dim i As Long i = Sheets("Ark1").Cells(65536, 100).Value + 1 ActiveCell.Value = i Sheets("Ark1").Cells(65536, 100).Value = i End Sub
Markér cellen du skal have nummeret i, tryk Alt+F8, markér makroen TællerNr og tryk Enter. Det er det nemmeste i din situation.
Her er det nu meningen af du skal oprette en lille menu til Excel som ikke styres af de øvrige menubegrænsninger du har.
Vi skal nu oprette en Userform:
- Vælg Insert - UserForm
Hvis du ikke kan se den lille menu ToolBox skal du vælge View - Toolbox
- Vælg at indsætte en CommandButton i din UserForm og navngiv den "Indsæt næste nr."
- I oversigten til venstre skal du nu dobbeltklikke på Ark1 - I højre side ser du nu programvinduet for Ark1 - I toppen af dette programvindue er to rullemenuer - I rullemenuen "General" vælger du WorkSheet - I rullemenuen "Declarations" vælger du Activate
I programvinduet vises nu:
Private Sub Worksheet_Activate()
End Sub
- Mellem de to linjer skriver du UserForm1.Show
Private Sub Worksheet_Activate() UserForm1.Show End Sub
Denne funktion gør at din ny menu vises hver gang du vælger Ark1
- I oversigten til venstre skal du nu dobbeltklikke på UserForm1 - Dobbeltklik på din knap
Nu vises programvinduet for din knap med følgende kode:
Private Sub CommandButton1_Click()
End Sub
- Mellem de to linjer indsætter du denne kode:
Dim i As Variant i = Ark1.Range("Tæller") + 1 ActiveCell.Value = i Ark1.Range("Tæller") = i
Resultatet ser således ud:
Private Sub CommandButton1_Click() Dim i As Variant i = Ark1.Range("Tæller") + 1 ActiveCell.Value = i Ark1.Range("Tæller") = i End Sub
- I oversigten til venstre skal du nu dobbeltklikke på UserForm1
Til venstre (nederst) ser du vinduet Properties - UserForm1
- Rul ned til du finder indstillingen "ShowModal" og sæt denne til "False"
Dette bevirker, at du kan arbejde i arket mens Userformen er aktiv.
Luk nu Microsoft Visual Basic ned og prøv at klikke væk fra Ark1 og så tilbage på Ark1.
Din menu skulle nu gerne vises og du skulle kunne vælge en hvilken som helt celle og klikke på din ny knap og få indsat den næste tal i rækken.
Du kan selvfølgelig også indsætte en knap på hver af dine ark som alle ref. til samme makro.
- Du vælger værktøjslinjen - Formularer - Vælg Knap og klik et sted i arket - Der vil nu poppe en dialogboks op hvor du skal vælge din Makro som i det oprindelige eksempel.
Denne fremgangsmåde kan du så anvende på alle de ark du vil have en knap i.
Med venlig hilsen
TVC
P.S. Denne løsning er noget lettere end den med UserForm1, men hvis du arbejder dagligt med Excel vil du glæde dig over at lære mere og mere om de muligheder der ligger bag VBA :-)
Det lyder alt sammen meget spændende, tak for de mange forslag, jeg kigger nærmer på det og vender tilbage med point til de forslag jeg finder mest anvendeligt.
HVis du vil sikre dig at ingen ved en fejl skal komme til at overskrive værdien i cellen Tæller kan du blot oprette et nyt ark hvor du navngiver en celle Tæller og så skjuler arket.
Nå - kan det også gøres på den måde! Det er jo nemmere.
Synes godt om
Ny brugerNybegynder
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.