Avatar billede kim1a Ekspert
02. juni 2015 - 14:03 Der er 5 kommentarer og
1 løsning

VBA knap skifter nummer

Jeg har skabt en VBA kode som skaber en kopi af det ark der arbejdes i for så at lave originalen til en version uden formler.

Jeg har indsat en knap som "lukker" = kører min vba. Når den så skaber versionen uden formler skal knappen også slettes.

Desværre skifter knappen nummer - for nogen gange kan jeg bruge:
ActiveSheet.Shapes.Range(Array("Button 1")).Delete

Mens andre gange (f.eks. her senest) har knappen fået nummeret 4. Kan nogen fortælle mig hvorfor?

Min løsning har hidtil været uelegant:
On Error Resume Next
    ActiveSheet.Shapes.Range(Array("Button 1")).Delete
    ActiveSheet.Shapes.Range(Array("Button 2")).Delete
On Error GoTo 0

Men nu hvor den får nummer fire synes jeg det begynder at blive besværligt. Der må være en logik i hvorfor den får nummer 4?
Avatar billede supertekst Ekspert
02. juni 2015 - 14:25 #1
Er der kun en knap?
Hvis ja kunne du så ikke spørge på navnet om dette indeholder ordet "CommandButton"
Avatar billede supertekst Ekspert
02. juni 2015 - 14:31 #2
Eller "Button"
Avatar billede Dan Elgaard Ekspert
02. juni 2015 - 16:17 #3
Hvis dit regneark ikke indeholder nogen andre figurer kan denne makro slette uden at kende navn på figur (knap):

If ActiveSheet.Shapes.Count > 0 Then
    For Counter = ActiveSheet.Shapes.Count To 1 Step -1
        ActiveSheet.Shapes(Counter).Delete
    Next
End If
Avatar billede kim1a Ekspert
02. juni 2015 - 17:01 #4
Fint med en løsning der er en smule mere elegant, så du får point. Det ændrer dog ikke på at jeg stadig finder det mærkeligt at den pludselig giver knappen et vilkårligt nummer.

I denne situation er løsningen fin, fordi den så sletter alle figurer, men jeg kunne jo nemt ende i en situation hvor jeg har brug for kun at slette nogle.

Supertekst -> Kunne du komme med et forslag til en linje som søger i figurens navn eller evt. type.
Avatar billede Dan Elgaard Ekspert
02. juni 2015 - 19:56 #5
Det er ikke et tilfældigt nummer, men det næste nummer i rækken...
...hver gang du laver en kopi, så bliveer knappen tildelt det næste nummer.

Du kan let udvide min lille kode til også at kigge på knappens navn...
...sådan lige i hovedet, uden at have testet det i et kodemodul, må det blive noget i denne stil:

If ActiveSheet.Shapes(Counter).Caption = "Min Knap" Then ActiveSheet.Shapes(Counter).Delete

På den måde får du kun slettet knappen, hvis teksten på selve kanppen er "Min Knap" uanset, hvilket kodenavn knappen måtte få.
Avatar billede kim1a Ekspert
03. juni 2015 - 08:24 #6
Hvis jeg bruger ctrl når jeg flyte fanen i bunden så skaber den en ny fane hvor knappen har nummer 1 stadig, men der må jo være forskel på at copy via vba og så ctrl i selve Excel.

Men tak for uddybningen.
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