Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketAktiv makro deaktiveres

 Besvar Besvar
Forfatter
P.K.. Se dropdown
Forum Begynder
Forum Begynder


Medlem: 01.Jul.2017
Status: Offline
Point: 17
Direkte link til dette indlæg Emne: Aktiv makro deaktiveres
    Sendt: 01.Jul.2017 kl. 10:46
Jeg har en makro der kører hver gang der åbnes et worksheet eller laves et nyt.
 
Undertiden kan der være genereret for mange regneark.  Der er således behov for at slette inaktuelle ark.
 
Men når der er flere ark markeret kommer der en fejl.  Kan jeg skrive en betingelse ind i min auto makro der gør at den kun køres når der kun er 1 ark markeret ?

Alternativt - kan man lave en makro der rydder op når regnearket lukkes og sletter alle nyoprettede ark som alle hedder noget med "arkXX" ?
 
Her er den makro der kører pt.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Call Makro2
End Sub
 
 
Til top



Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 01.Jul.2017 kl. 12:37
Citér kan man lave en makro der rydder op når regnearket lukkes og sletter alle nyoprettede ark som alle hedder noget med "arkXX"?
Benyt 'Workbook_BeforeClose' eventen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

      On Error Resume Next
      Application.DisplayAlerts = False

      Dim
WS As Excel.Worksheet
      For Each WS In ThisWorkbook.Worksheets
            If UCase$(Left$(WS.Name, 3)) = "ARK" Then WS.Delete
      Next
      Set
WS = Nothing

      Application.DisplayAlerts = True

End Sub


Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 01.Jul.2017 kl. 11:34
Citat: P.K.. P.K.. skrev:

 Kan jeg skrive en betingelse ind i min auto makro der gør at den kun køres når der kun er 1 ark markeret ?
 

if ThisWorkbook.Windows(1).SelectedSheets.Count = 1 then
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 01.Jul.2017 kl. 12:37
Citér kan man lave en makro der rydder op når regnearket lukkes og sletter alle nyoprettede ark som alle hedder noget med "arkXX"?
Benyt 'Workbook_BeforeClose' eventen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

      On Error Resume Next
      Application.DisplayAlerts = False

      Dim
WS As Excel.Worksheet
      For Each WS In ThisWorkbook.Worksheets
            If UCase$(Left$(WS.Name, 3)) = "ARK" Then WS.Delete
      Next
      Set
WS = Nothing

      Application.DisplayAlerts = True

End Sub


Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
P.K.. Se dropdown
Forum Begynder
Forum Begynder


Medlem: 01.Jul.2017
Status: Offline
Point: 17
Direkte link til dette indlæg Sendt: 03.Jul.2017 kl. 16:36
Tak for svar Excelgaard.

Når jeg sætter makroen ind i mit regneark sker der imidlertid intet.

Jeg benytter office 365 nyeste version af excel - kan der være ændret i kommandoerne - eller burde det virke så snart excel lukkes ?
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 03.Jul.2017 kl. 17:15
Hvor sætter du makroen ind???
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
P.K.. Se dropdown
Forum Begynder
Forum Begynder


Medlem: 01.Jul.2017
Status: Offline
Point: 17
Direkte link til dette indlæg Sendt: 07.Jul.2017 kl. 14:12
Jeg sætter den ind i "Denne_Projektmappe"

Testede lidt mere og fandt ud af at den kører fint - der skete bare ikke noget.

Da jeg fjernede UCase$ delen virkede den, så det må være der den fejler. Det bør ikke betyde noget da det kun er "Ark" navne jeg vil fjerne. TAK
Til top
Kurt Kubik Se dropdown
Sølv bruger
Sølv bruger


Medlem: 18.Feb.2012
Status: Offline
Point: 209
Direkte link til dette indlæg Sendt: 07.Jul.2017 kl. 15:50
Bliver lidt nysgerrig på, hvad forskellen er imellem UCase$ og UCase?

Altså... hvad betyder tegnet "$"
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 07.Jul.2017 kl. 16:10
$ tegnet fortæller VBA, at, hvad der kommer i funktionen allerede er valideret som en string - VBA vil derfor ikke bruge tid på dette, men blot antage, at indholdet/resultatet er en string...
...og, dermed bliver koden en lille smule hurtigere :-)

Alternativt vil VBA starte med at antage 'Variant', hvilket både kræver lidt mere hukommelse, og tage nogle få milisekunder længere tid.

Indrømmet: Ved små koder er det nok lidt 'overkill', men jeg har bare vænnet mig til at gøre det, da jeg altid stoler på mine egne variabel deklarationer.

Koden bliver ganske enkelt mere 'robust'.
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 07.Jul.2017 kl. 16:12
PS: Husk, at markere svaret som [Accepteret svar], hvis det kunne bruges, så andre også kan få glæde af det...
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk