Print side | Luk vindue

Aktiv makro deaktiveres

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3084
Udskrevet den: 28.Apr.2024 kl. 20:23


Emne: Aktiv makro deaktiveres
Besked fra: P.K..
Emne: Aktiv makro deaktiveres
Posteringsdato: 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
 
 



Svar:
Besked fra: Kurt Kubik
Posteringsdato: 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


Besked fra: EXCELGAARD
Posteringsdato: 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.


Besked fra: P.K..
Posteringsdato: 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 ?


Besked fra: EXCELGAARD
Posteringsdato: 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.


Besked fra: P.K..
Posteringsdato: 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


Besked fra: Kurt Kubik
Posteringsdato: 07.Jul.2017 kl. 15:50
Bliver lidt nysgerrig på, hvad forskellen er imellem UCase$ og UCase?

Altså... hvad betyder tegnet "$"


Besked fra: EXCELGAARD
Posteringsdato: 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.


Besked fra: EXCELGAARD
Posteringsdato: 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.



Print side | Luk vindue