• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

macro automatisch starten; macro aan meerdere knoppen toewijzen

Status
Niet open voor verdere reacties.

1107972

Gebruiker
Lid geworden
5 mei 2004
Berichten
186
Hallo,

Misschien ongebruikelijk en misschien ook wel onhandig, maar ik zit met 2 vragen en wilde ze voor mijn gemak in 1 topic zetten. Hopelijk krijg ik er geen problemen mee.

Vraag 1:
Ik heb in een excel bestand een aparte werkblad gemaakt voor een ranglijst. Om ervoor te zorgen dat de ranglijst altijd up2date is wil ik een macro gebruiken die bij het openen van het werkblad automatisch eenmalig van start gaat.

De macro die ik nu gebruik gekoppeld aan een tekstvak is deze:

Sub ranglijst()
Application.ScreenUpdating = True
ActiveSheet.Unprotect
Range("C7:AB56").Select
Selection.Sort Key1:=Range("Y7"), Order1:=xlDescending, Key2:=Range("S7") _
, Order2:=xlAscending, Key3:=Range("R7"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
ActiveSheet.Protect
Application.ScreenUpdating = False
End Sub

Kan iemand een advies geven hoe ik dit het beste kan aanpakken.

Vraag 2
In een ander werkblad heb ik 3 macro's gemaakt voor het plakken, kopieren en deleten van een selectie (AA7:GF7). Elke macro word gekoppeld aan een tekstvak die elk weer in een standaard kolom zitten, respectievelijk GK7, GM7, GO7.

Het probleem is echter luiheid. Namelijk nog 49 andere krijgen een dezelfde macro enkel dan voor hun rij. Is er een macro die dit werk zou kunnen vereenvoudigen. Dus dat door de locatie van het tekstvak de macro weet op welke regel hij de selectie moet toepassen.

Alvast bedankt
 
Je kan de macro in ThisWorkbook zetten.

Private Sub Workbook_Open()
Application.ScreenUpdating = True
ActiveSheet.Unprotect
Range("C7:AB56").Select
Selection.Sort Key1:=Range("Y7"), Order1:=xlDescending, Key2:=Range("S7") _
, Order2:=xlAscending, Key3:=Range("R7"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
ActiveSheet.Protect
Application.ScreenUpdating = False
End Sub

De tweede vraag snap ik niet helemaal.
 
Hoi 1107972,

Het antwoord op vraag 1: Ja dat kan. Noem de macro auto_open(). Bij het openen van het bestand en na het activeren van de macro's zal deze macro automatisch uitgevoerd worden.
Het antwoord op vraag 2: Dat zal ook vast wel kunnen, maar een tekstvak is niet gekoppeld aan een kolom. Kun je je macro vooraf laten gaan door en regel waarin je een kolom kunt aangeven? Zoiets als:

dim verwijderen_kolom
verwijderen_kolom = InputBox("Welke kolom wil je verwijderen?", "INPUT")
Range(verwijderen_kolom & "1").Select
Selection.EntireColumn.Delete

Succes,

Richard
 
Vraag 1 beschouw ik dan maar als beantwoord, probeer het later wel ff uit.

In reactie op Richard:

Ik was er inderdaad al bang voor, omdat een tekstvak niet in de kolom en regel structuur word opgenomen maar er boven ligt. Ik begrijp je advies niet helemaal 100% maar de structuur van de pagina veranderen zou denk ik meer moeite kosten dan 150macro te maken.

Is er ook niet een mogelijk om een knop aan een cel te koppelen. Dat is wel mogelijk en dan zijn we denk ik ook al een stap verder.

Alvast bedankt, Eric
 
De oplossing die jullie voorgedragen hebben voor vraagstelling 1 werken niet in mijn geval.

@Corverm: De suggestie die jij doet werkt wel maar niet op het juiste moment. In jou geval wordt de macro uitgevoert op het moment dat de het bestand word geopend. De bedoeling is juist dat als ik in het werkblad uitslagen een stand invoer en daarna bijvoorbeeld naar het werkblad ranglijst gaat dat op dat moment van openen van het werkblad de macro van start gaat.

@Richard: In jou geval heb ik helemaal geen verandering kunnen ontdekken.

Ik heb het opgelost door gebruik te maken van de optie, worksheet_change(ByVal Target As Range)
Dat werkt nu perfect.

Toch bedankt
 
Laatst bewerkt:
1107972 zei:
De oplossing die jullie voorgedragen hebben voor vraagstelling 1 werken niet in mijn geval.

@Corverm: De suggestie die jij doet werkt wel maar niet op het juiste moment. In jou geval wordt de macro uitgevoert op het moment dat de het bestand word geopend. De bedoeling is juist dat als ik in het werkblad uitslagen een stand invoer en daarna bijvoorbeeld naar het werkblad ranglijst gaat dat op dat moment van openen van het werkblad de macro van start gaat.

Eric,
Sorry maar ik had begrepen dat het zo moest. Je bent er nu uit? Blijft over het tweede gedeelte van je vraag. Misschien een voorbeelsbestandje?
 
Ik ga gewoon maar veel werkzaamheden herhalen, kost ff wat tijd maar is denk het makkelijkst, Als alles af is zal ik uiteindelijk wel het resultaat hier posten, dan kunnen jullie een oordeel geven en misschien dat het nog verbeterd kan worden (waarschijnlijk wel)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan