Avatar billede jfj Nybegynder
28. februar 2009 - 14:03 Der er 12 kommentarer og
1 løsning

Hjælp til makroer i excel

Hej

Jeg er helt ny m.h.til makroer, men vil gerne igang, men "bøvler" llidt rundt i det, så jeg håber der er nogen der vil hjælpe lidt.

Når jeg åbner et nyt regneark kan jeg ikke oprette en ny makro, da opret-knappen er dimmet ud.
Hvad skal jeg gøre for at for at få lov til at oprette en Macro ?

Jeg har prøvet at indspille en makro, -og det virker. Jeg kan så efterfølgende redigere, men knappen "Opret" er stadig dimmet ud.

Der er jelt klart noget jeg ikke har forstået godt nok, så det ville være dejligt med lidt hjælp og måske en henvisning til en side for begyndere.

mvh
jfj
Avatar billede staal84 Nybegynder
28. februar 2009 - 14:47 #1
Hej

"Opret"?? - hvor har du den henne?

Hvis du vil oprette en makro uden at indspille den den, skal du (mig bekendt)

- trykke Alt + F11.
- Under view klikke på "project explorer".
- Så kan du højreklikke på "this workbook" og
- indsætte et "module".

Herinde kan du så skrive din makro...

  Sub whatever()

    'Her skrives makroen.

  End sub

Prøv at søge lidt på google efter VBA og excel og se om ikke du finder nogle sider som kan give dig lidt grundlængende viden...

Ellers kan jeg anbefale bogen: Excel 2003 programmering med VBA af Sharon Podlin fra libris.

Håber det kan hjælpe dig lidt.
Avatar billede jfj Nybegynder
28. februar 2009 - 15:06 #2
Opret knappen ligger under Funktioner/Makro/Makroer. Her åbnes et vindue med følgende knapper: Afspil - Annuller - Afspil trinvis - Rediger - Opret - Slet - Indstillinger.

Vedr. dit svar: Når jeg så har indskrevet min Sub.... hvordan gør jeg den så tilgængelig for regnearket ? så jeg kan køre den.
Avatar billede jfj Nybegynder
28. februar 2009 - 15:18 #3
Jeg kan godt få noget af det til at virke, men pludselig kan jeg ikke få flere makroer etil at virke. 
Jeg har nu to som virker, men den tredie vises ikke når jeg vælger Funktioner/Makro/Makroer.
Hvordan kan det være ?
Avatar billede staal84 Nybegynder
28. februar 2009 - 15:35 #4
Okay - har fundet din "opret" knap, men ved ikke hvorfor den er ikke kan bruges.

De bør være tilgængelige, hvis de er oprettet med:

Sub navn()
makro
End sub

i et modul i this workbook.
Ligeledes skal den under funktioner/makro/makroer også stå til:
"makroer i: Denne projektmappe eller alle åbne projektmapper.

Kan du sætte koden fra den trejde makro som ikke virker ind her, så kan vi andre evt teste den?
Avatar billede jfj Nybegynder
28. februar 2009 - 16:00 #5
Jeg har oprettet 3 makroer (lidt uden sammenhæng/mening da det kun er test):
--------Denne virker---------------------------------------------
Sub ListFiler()
    Dim Mappe As String
    Dim Undermapper As Boolean

    Mappe = InputBox("Indtast sti til mappe" & vbCrLf _
      & "Fx C:\USA")
        If MsgBox("Skal undermappers indhold også listes?", _
          vbYesNo + vbQuestion) = vbYes Then
            Undermapper = True
        Else
            Undermapper = False
        End If

    Set fs = Application.FileSearch
    With fs
        .LookIn = Mappe
        .SearchSubFolders = Undermapper
        .Filename = "*"
        If .Execute() > 0 Then
            Range("a1").Select
            For i = 1 To .FoundFiles.Count
                ActiveCell.Value = .FoundFiles(i)
                ActiveCell.Offset(1, 0).Select
            Next i
        Else
            MsgBox "Mappen findes ikke, eller den er tom", vbOKOnly + vbExclamation
        End If
    End With
End Sub
--------Denne vises under kør makro, men virker ikke ----------
Sub FlytData()
Set sh1 = Sheets("Ark1") ' hent fra
Set sh2 = Sheets("Ark2") ' kopier til
For Each c In sh1.Range(sh1.Range("A1"), ActiveCell.SpecialCells(xlLastCell))
rk = sh2.Cells(1000, 1).End(xlUp).Row + 1
If c.Interior.ColorIndex = 6 Then
c.Copy sh2.Cells(rk, 1)
End If
Next
End Sub
--------Denne er oprettet som modul 3, mn vises ikke under makroer i regnearket--------

Sub Worksheet_Change(ByVal Target As Range)
Dim tekst, farveNr
    If Not Intersect(Target, Range("A1:IV392")) Is Nothing Then
        tekst = Target.Text
     
Rem Test om celle-indhold er slettet                '<---tilføjelser
        If tekst = "" Then                          '<---
            Target.Interior.ColorIndex = xlNone    '<---
        Else                                        '<---
            farveNr = findFarve(LCase(tekst))
            If farveNr <> -1 Then
                Target.Interior.ColorIndex = farveNr
            End If
        End If                                      '<---
    End If
End Sub
Function findFarve(tekst)
    findFarve = -1
 
    If tekst = "Ferie" Then
        findFarve = 4                      'Grøn
    Else
        If tekst = "Syg" Then
            findFarve = 3                  'Rød
        Else
            If tekst = "Ferie fridag" Then
                findFarve = 6              'Gul
            End If
        End If
    End If
End Function
----------------------------------------------------
-Den første makro virker fint: finder alle stier og filer på en disk
-Den næste makro skal kopiere data fra ark 1 til ark 2
-Den tredie skal ændre baggrundsfarven hvis der står: Ferie, Syg, eller Ferie fridag i en celle.
Avatar billede staal84 Nybegynder
28. februar 2009 - 16:21 #6
De første to er "almindelige" makroer. Den trejde skal lægges i det bestemte arks programkode.

Højreklik på fanen nederst i dit regneark og vælg "Vis programkode" og indsæt den her, så bør den køre når du foretager ændringer i arket.

Ang. makro 2, (så er jeg ikke nogen haj), men det ser ud til at den kun skal kopier hvis cellerne er farvet gule. Er det meningen?
Avatar billede jfj Nybegynder
28. februar 2009 - 16:46 #7
ja, det kan jeg egentlig godt se, det med farven.  Det sidste ,med at lægge koden ind under fanen nederst i regnearket har jeg prøvet, men hvordan får jeg den så eksekveret ?
Avatar billede staal84 Nybegynder
28. februar 2009 - 16:57 #8
Som jeg læser det, så når der sker en ændring i dit range:
Range("A1:IV392")
Avatar billede jfj Nybegynder
28. februar 2009 - 17:07 #9
Jeg kan ikke forstå hvad du mener. Det er range("A1:IV392) jeg er interesseret i.

Et sidste spørgsmål (tror jeg nok ;-) :
Hvordan kan jeg se, om makroen skal lægges ind under fanenen eller kan skrives direkte i VBA editoren ?
Avatar billede staal84 Nybegynder
28. februar 2009 - 17:17 #10
Det er noget med når dit Target (hvad det så end er) krydser dit range.

Hvor har du koden fra? Der fulgte ikke en Userform med, som kunne forklare din Target værdis oprindelse?
Avatar billede staal84 Nybegynder
28. februar 2009 - 17:22 #11
De almindelige hedder "sub navn()" eller "public sub navn()" og lægges i et module.

Du kan se at din trejde makro hedder:
Sub Worksheet_Change()

Altså relateret til et bestemt worksheet.

Du har faktsik også en fjerde makro:
Function findFarve(tekst)

Det er en funktion, lige som =Sum() er det.
Noget du enten kan bruge til en makro eller som en formel i selve regnearket.
Avatar billede jfj Nybegynder
28. februar 2009 - 17:31 #12
Makroerne har jeg alle lånt fra indlæg på eksperten.

Jeg er da blevet noget "klogere" på makroer, men mangler nok at få at vide:

Hvordan kalder jeg en makro som læges nd under fanen/Vis programkode ?
Avatar billede jfj Nybegynder
28. februar 2009 - 20:29 #13
Tak for hjælpen.
Jeg fandt en artikel om VBA og Excel her:
http://www.anthony-vba.kefra.com/vba/vbabasic1.htm#Creating_Your_First_Macro
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

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