Avatar billede idani Praktikant
22. februar 2008 - 14:17 Der er 14 kommentarer og
1 løsning

Danne makro som indsætter en kode i kode modulet for det aktuelle

Danne makro som indsætter en kode i kode modulet for det aktuelle ark.

Altså en af jer flinke folk har skrevet en fin kode til mig som jeg skal indsætte i kode modulet for de enkelte ark.

Så langt så godt.

Men jeg kunne rigtig godt tænke mig at jeg kunne lave den som en makro, som kunne ligge i min personlige makro mappe.
PÅ den måde ville jeg kunne "slå" koden til og fra.

Altså hvordan får jeg nedenstående kode lagt i kodemodulet via en makro - og hvordan får jeg så en makro til at slette den igen ??

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
ActiveCell.EntireRow.Interior.ColorIndex = 19
End Sub

Hilsen
Novicen

Ida

Som syntes at kode arbejde i Excel faktisk er ret sjovt ;o)
Avatar billede supertekst Ekspert
22. februar 2008 - 14:39 #1
Kunne måske være betinget af det aktuelle "UserName"
Avatar billede idani Praktikant
22. februar 2008 - 14:42 #2
Øhhh se nu er jeg jo lost - jeg er ren novice i makroer - og er kun nået til at få lokket jer andre til at skrive koder / makroer for mig - som jeg så selv kopierer inde i excel - og så retter lidt i løbende.....

Så du kommer nok til at gå helt ned på 1. klasses niveau ;o)

Hilsen
Ida
Avatar billede supertekst Ekspert
22. februar 2008 - 14:53 #3
Makroen går jo ud på følgende:
Når der vælges en celle sættes der en farvemarkering for den pågældende række.

Denne kode: kopieres over på det ark, hvor makroen skal anvendes:
HøjreKLik på arkfanen - Vis programkode - Indsæt koden
Der, hvor der står XX indsætter du dit brugernavn i stedet - gem og luk VBA-vinduet.

Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Application.UserName = "XX" Then
        Cells.Interior.ColorIndex = xlNone
        ActiveCell.EntireRow.Interior.ColorIndex = 19
    End If
End Sub
Avatar billede idani Praktikant
22. februar 2008 - 15:16 #4
Se det med at kopierer den ind i arket har jeg fanget - men det jeg var interesseret i var - at kunne have koden liggende på en makroknap som jeg kunne bruge uanset hvilket ark jeg arbejder i...
Avatar billede supertekst Ekspert
22. februar 2008 - 15:28 #5
Ok - så kan det være at vi skal over i "Tilføjelsesprogrammer" - skal lige prøve det - vender så tilbage...
Avatar billede idani Praktikant
22. februar 2008 - 15:47 #6
Super jeg håber at du finder en eddersmart løsning.

Hilsen
IDa
Novicen
Avatar billede supertekst Ekspert
22. februar 2008 - 18:32 #7
Via Tilføjelsesprogrammer lykkedes det ikke for mig.

Så en "nødløsning" kunne måske være følgende:

Koden anbringes i ThisWorkbook i de XLS-filer, hvor funktionen ønskes. Koden virker så på alle ark i den pågældende fil.
Ikke den smarteste løsning - men kunne måske anvendes indtil andet måske dukker op.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
        ByVal Target As Excel.Range)
        Cells.Interior.ColorIndex = xlNone
        ActiveCell.EntireRow.Interior.ColorIndex = 19
End Sub
Avatar billede idani Praktikant
24. februar 2008 - 12:36 #8
Hmmmm ja det er så også den mulighed jeg benytter mig af lige nu.....
Når men jeg må prøve at se hvordan jeg ellers kan få den til at lykkes for mig.....
Avatar billede supertekst Ekspert
24. februar 2008 - 21:32 #9
Bemærk - at der er en forskel:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
= et ark

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
        ByVal Target As Excel.Range)
= alle ark
Avatar billede kabbak Professor
26. februar 2008 - 23:16 #10
Hvis du gemmer denne kode i din Personlige projektmapper.
Når du så har en projektmappe, hvor du vil bruge den i, kører du makroen, og den vil blive skrevet i den aktive mappe i ThisWorkbook modulet.



Public Sub Flyt_Markeringskode()
Code = "Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ " & vbCrLf
    Code = Code & "    ByVal Target As Excel.Range)" & vbCrLf
    Code = Code & "    Cells.Interior.ColorIndex = xlNone" & vbCrLf
    Code = Code & "    ActiveCell.EntireRow.Interior.ColorIndex = 19" & vbCrLf
    Code = Code & "End Sub"
   
      With ActiveWorkbook.VBProject. _
      VBComponents("ThisWorkbook").CodeModule
        NextLine = .CountOfLines + 1
        .InsertLines NextLine, Code
    End With
End Sub
Avatar billede kabbak Professor
26. februar 2008 - 23:22 #11
Denne skriver i det aktive arks modul og gælder kun i det ark.

Public Sub Flyt_Markeringskode_til_AktiveArk()
Code = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbCrLf
    Code = Code & "    Cells.Interior.ColorIndex = xlNone" & vbCrLf
    Code = Code & "    ActiveCell.EntireRow.Interior.ColorIndex = 19" & vbCrLf
    Code = Code & "End Sub"
   
      With ActiveWorkbook.VBProject. _
      VBComponents(ActiveSheet.Name).CodeModule
        NextLine = .CountOfLines + 1
        .InsertLines NextLine, Code
    End With
End Sub
Avatar billede idani Praktikant
27. februar 2008 - 09:33 #12
Jamen det er jo smukt.

Et hurtigt tillægsspørgsmål.

Hvis nu jeg vil have en makro som kan "slå ovenstående makro fra igen" hvordan skla den så se ud??
Avatar billede kabbak Professor
28. februar 2008 - 21:11 #13
denne stopper alle automatiske makroer i hele projektmappen

Public Sub StopAutomatiskeMakroer()
Application.EnableEvents = False
End Sub

og denne starter dem igen

Public Sub StartAutomatiskeMakroer()
Application.EnableEvents = True
End Sub
Avatar billede idani Praktikant
29. februar 2008 - 09:40 #14
Hejsa Kabbak

Super med de 2 makroer - og de virker lige netop som jeg gerne ville have dem til....

Så smider du ikke lige et svare - sådan at du kan få point

Hilsen
IDa
Avatar billede kabbak Professor
29. februar 2008 - 10:39 #15
et svar ;-))
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