Avatar billede hbl Juniormester
19. marts 2025 - 12:49 Der er 10 kommentarer og
1 løsning

On Change udfør da en makro på andet ark.

Jeg har to data ark "Data" og "Output"
Jeg har en Makro ("BrugFilter") der filtrerer data på "Output"
Denne Makro vil jeg gerne have til at blive aktiveret, når jeg ændrer data i "Data".
Jeg kan godt kalde makroen fra "Data" ved at bruge nedenstående komando i ark koden under 'Worksheet, Change'

  Private Sub Worksheet_Change(ByVal Target As Range)
  '
  BrugFilter

  End Sub

Men makroen kører jo så på "Data", og ikke på "Output" som var ønsket.
Hvordan får jeg denne makro til at køre på "Output" uden at jeg forlader "Data"?
Avatar billede ebea Ekspert
19. marts 2025 - 13:52 #1
Ændre lidt på din kode.

If Not Intersect(Target, Me.Range("dit område")) Is Nothing Then 'skift til dit ønskede område
      Application.EnableEvents = False
        Call Worksheets("Output").BrugFilter
    End If
End Sub
Avatar billede Dan Elgaard Ekspert
19. marts 2025 - 13:52 #2
I 'BrugFilter' makroen skal du definere 'OutPut' som det ønskede ark, og dernæst henvise til det alle steder, hvor du laver ændriner til et ark, f.eks.:

Dim WS as Excel.Worksheet
Set WS = Sheets("OutPut")

WS.Filter ....
WS.Range ...
WS.Cells ...

o.s.v.

Uden din kode bli'r det lidt svært, at give et mere præcist svar.
Avatar billede hbl Juniormester
19. marts 2025 - 14:22 #3
Jeg bruger kun filter funktionen på "Output".
Makroen er meget simpel:

Sub BrugFilter()
       
        Columns("J:J").Select
    Selection.AutoFilter
    ActiveSheet.Range("$J$1:$J$200").AutoFilter Field:=1, Criteria1:="x"
 
End Sub
Avatar billede hbl Juniormester
19. marts 2025 - 14:46 #4
Hov så først lige dit indlæg ebea.
Hvad mener du med ("dit område")?
Avatar billede ebea Ekspert
19. marts 2025 - 15:15 #5
#4 - Det er det område, som du arbejder på i "Data" arket
Avatar billede hbl Juniormester
19. marts 2025 - 16:00 #6
Jeg syntes ikke jeg har succes.
Min kode ser nu sådan ud:

På kodearket 'Ark1(Data):

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Range("K1:AC15")) Is Nothing Then
      Application.EnableEvents = False
    Call Worksheets("Output").BrugFilter
End If
End Sub

og min makro 'Brugfilter* ligger i kodearket 'Module1' og ser sådan ud:

Sub BrugFilter()
       
        Columns("J:J").Select
    Selection.AutoFilter
    ActiveSheet.Range("$J$1:$J$200").AutoFilter Field:=1, Criteria1:="x"
     
End Sub

Hvis jeg kører Makro 'BrugFilter' virker den på begge ark, alt efter hvilket ark jeg har fokus på. Men automatikken med at få ændringer på "Data" til at filtrerer "Output", kan jeg ikke få til at virke.
Avatar billede ebea Ekspert
19. marts 2025 - 17:05 #7
Avatar billede hbl Juniormester
19. marts 2025 - 19:50 #8
Tusind tak.
Jeg havde en del bøvl med at få VBA koden forbi mine Firewall, men det var bestemt ulejligheden værd.
Nu virker det fuldstændigt som jeg havde drømt om.

Igen: Tak.
Avatar billede hbl Juniormester
19. marts 2025 - 20:01 #9
Jeg får dog problemer når jeg prøver at beskytte mit "Output" ark. Jeg vil gerne beskytte det mod utilsigtet ændringer af de formler der står i cellerne. Man åbenbart ikke kan bruge denne filter funktion på et beskyttet ark.
Nogen gode ideer, ud over at sikre at man altid har en kopi som backup. :-)
Avatar billede ebea Ekspert
19. marts 2025 - 20:44 #10
#9 - Jeg har opdateret filen med linket i #7, så det kan låses op når koden kører, og når koden er færdig, låses det med det område du har valgt.
Koden er 1234 (kan du se i VBA koden).

Linket i #7 er stadig gældende
Avatar billede hbl Juniormester
20. marts 2025 - 09:09 #11
tak
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
Stort udvalg af Excel kurser til alle niveauer og jobfunktioner

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