Avatar billede platapus Nybegynder
12. februar 2004 - 11:35 Der er 16 kommentarer og
1 løsning

Opstille en makro i excel regneark!

Jeg skal have lavet en makro i et excel regneark der gør sådan at når man åbner for regnearket så skal der først poppe en boks frem (hvis muligt) og spørge efter navn og dernæst skal regnearket selv generere et tal startene fra et tal som fx 1 og næste gang det bliver åbnet skal tallet være 2 osv osv..

Er der nogen der kender et sted hvor der er en guide til hvordan jeg laver det eller er der nogen der hurtig kan krible nogle linjer ned?
12. februar 2004 - 12:16 #1
I kodemodulet ThisWorkbook laver du f.eks. dette:

Private Sub Workbook_Open()
    Dim sAnswer As String

AgainIfEmpty:
    sAnswer = InputBox("Indtast dit navn", "Bruger sprøgsmål")
   
    If Not (sAnswer = "") Then
        With Worksheets("Ark1")
            .Range("A65536").End(xlUp).Value = _
                .Range("A65536").End(xlUp).Offset(-1, 0).Value + 1
            .Range("A65536").End(xlUp).Offset(-1, 1).Value = sAnswer
        End With
    Else
        GoTo AgainIfEmpty
    End If

End Sub

Brugeren vil så blive ved med at få dette sprøgsmål indtil han/hun skriver noget.
Prøv i et tomt regneark og udskift "Ark1" med navnet på det regneark, hvor du gerne vil have din lille log-fil.
Avatar billede kabbak Professor
12. februar 2004 - 12:17 #2
Denne sættes i modulet This workbook
Den skriver i det første ark og nedefter
A kolonnen = Tallet
B kolonnen = navnet

Du kan skjule arket, så er der ingen der kan se det.


Private Sub Workbook_Open()
Dim Navn As String
Navn = InputBox("Indtast navn", "Navn")
If Navn = "" Then
MsgBox " Navn skal intastes", vbOKOnly, "Fejl"
Call Workbook_Open
End If

If Sheets(1).Range("A1") = "" Then
Sheets(1).Range("A1") = 1
Sheets(1).Range("B1") = Navn
Else
Sheets(1).Range("A65536").End(xlUp).Offset(1, 0) = Sheets(1).Range("A65536").End(xlUp) + 1
Sheets(1).Range("b65536").End(xlUp).Offset(1, 0) = Navn
End If
End Sub
Avatar billede kabbak Professor
12. februar 2004 - 12:18 #3
jeg er gammel ;-))
12. februar 2004 - 12:19 #4
Så gammel er du nok heller ikke (kigger på min fødselsattest!!!)
Avatar billede platapus Nybegynder
12. februar 2004 - 12:37 #5
Hvilken del af koden er det der gør at der bliver genereret et tal startene fra 1 i et felt i regnearket og næste gang regnearket bliver åbnet står der 2 osv osv??
Avatar billede kabbak Professor
12. februar 2004 - 12:40 #6
i min er det
første gang den køres får A1 værdien 1, her
Sheets(1).Range("A1") = 1

de andre gange her

Sheets(1).Range("A65536").End(xlUp).Offset(1, 0) = Sheets(1).Range("A65536").End(xlUp) + 1

der lægges 1 til værdien i cellen ovenover
Avatar billede kabbak Professor
12. februar 2004 - 12:43 #7
den skriver nedad i kolonnen, så det største tal står altid nederst, det er ikke den samme celle, den skriver i, men den samme kolonne.

Så kan man se i hvilken rækkefølge personerne har været inde i mappen.
Avatar billede platapus Nybegynder
12. februar 2004 - 12:51 #8
Kan man skrue det sådan sammen at efter boksen er kommet frem hvor man har tastet navnet så kommer navnet frem i fx celle c4 bagefter tallet.
Så når man har tastet navnet kommer der til at stå:
Platapus - 1
og næste gang man så åbner dokumentet hvor man har skrevet "Platapus" i navne boksen står der så i samme celle som første gang:
Platapus - 2
Avatar billede kabbak Professor
12. februar 2004 - 12:56 #9
hvad så hvis peter logger på , skal han så stå i en anden celle. ?
Avatar billede platapus Nybegynder
12. februar 2004 - 12:57 #10
nej han skal også komme frem i samme celle, det er sådan så man kan se hvem der har oprettet dokumentet denne gang! Det er et dokument der skal udfyldes med nogle data'er hvor 3 forskellige personer laver dem, så navnet skal være med for nemhedsskyld ved arkivering!
Avatar billede kabbak Professor
12. februar 2004 - 13:01 #11
når det er i samme celle er det svært at gemme for hver enkelt, man skal jo kende værdieren for alle som har logget på, i dette tilfælde 3.
12. februar 2004 - 13:02 #12
Her skriver den Altid tallet i Ark1 celle A1 og navnet i Ark1 celle B1

Private Sub Workbook_Open()
    Dim sAnswer As String

AgainIfEmpty:
    sAnswer = InputBox("Indtast dit navn", "Bruger sprøgsmål")
   
    If Not (sAnswer = "") Then
        With Worksheets("Ark1")
            .Range("A1").Value = Range("A1").Value + 1
            .Range("B1").Value = sAnswer
        End With
    Else
        GoTo AgainIfEmpty
    End If

End Sub
12. februar 2004 - 13:03 #13
eller tallet i A1 bliver altid 1 større.
Avatar billede platapus Nybegynder
12. februar 2004 - 13:49 #14
Når jeg nu har lavet makroen færdig hvordan får jeg den så til at kører automatisk hver gang dokumentet bliver åbnet? Den popper også den der boks op hvor den siger disable/enable makros, hvordan fjerner man den?
Avatar billede kabbak Professor
12. februar 2004 - 14:00 #15
Funktioner > makro> sikkerhed, sæt den til lav
Avatar billede kabbak Professor
12. februar 2004 - 14:02 #16
hvis du gar den i i modulet This workbook

kører den automatisk
Avatar billede kabbak Professor
12. februar 2004 - 14:02 #17
hvis du har den i modulet This workbook

kører den automatisk
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