reactie #2
best eerst je bestandje saven voor je deze macro laat lopen, mogelijks is er meer weg dan enkel je fotos ... (knoppen, ....)
reactie #6
alle soorten shapes kan je hier vinden
https://docs.microsoft.com/en-us/office/vba/api/office.msoshapetype
ik heb een hekel op de manier dat deze vraag aan het evolueren is !
Lees ik ergens gisteren een "sorry" van een andere helper, ik ken de achtergrond niet, maar het zal ook ergens verkeerde woordkeuze of gekwetste ego's zijn, gevaarlijk terrein.
Wat is de echte insteek van deze site ? Andere programmeurs of hobby-isten helpen op het ogenblik dat ze vastlopen of, in het geval van lco, hem van start tot finish, bij het handje vasthouden bij iedere scheet of iedere bobbel.
Ik hoop dat ik tot die categorie "helpers" behoor die zijn bijdragen vrij uitgebreid dokumenteer, maar in het geval lco, is dat parels voor de varkens.
Wat was zijn probleem in deze ? Een macro, die zijn werk deed, maar er eventjes een minuut over bezig was ipv. 8 sec.
Als dat een macro betreft, die iedere dag een tiental keer moet draaien, tot daar, maar een éénmalig proces, allez man.
In een vroeger gepostte bijdrage kreeg ik de kritiek dat de macro niet deed, ik vermoed dat mijn enige fout op dat ogenblik was, dat ik die macro niet onder de desbetreffende knop gehangen had. Na enige tijd hier meegedraaid te hebben, mag een beetje zelfredzaamheid tot een minimum vereiste zijn.
De bijdragen die gisterenavond de revue gepasseerd zijn, die hadden de aanpassing van de rijhoogte en de kolombreedte al buiten de loop en toch was er geen tijdswinst, zoek de oorzaak niet bij de helpers, ik denk dat lco ergens te veel solo-slim speelde en steeds zijn oude macro liet draaien, ik zie, op die "or" ipv "and" in de macro van SoftAid geen verschil met de definitieve versie. Die 8 en 12 vervangen door hun respectievelijke waarden is louter voor de leesbaarheid.
Sub MacroMetEenAndereNaamUitVeiligheidsoverwegingen()
Dim shp As Shape
t = Timer
For Each shp In ActiveSheet.Shapes
If shp.Type <> 8 And shp.Type <> 12 Then shp.Delete 'geen van beide types = deleten
Next shp
t1 = Timer
Columns("I:I").ColumnWidth = 32
Cells.RowHeight = 15
MsgBox "tijd voor verwijderen shapes " & t1 - t & " sec" & vbLf & "tijd voor kolommen en rijen " & Timer - t1 & " sec"
End Sub
Bovenstaand voorstel had volgende voordelen,
- de macro had een andere naam zodat TS zich niet kan vergissen
- er komt een terugkoppeling onder de vorm van een msgbox, dus die moet je zeker krijgen.
In die msgbox krijg je opgesplitst de tijd nodig voor het wissen van de shapes en de tijd voor de rest.
(nauwkeurigheid van die tijden mag je met een korrel zout nemen, max het 2e cijfer na de komma)
Verder was het in deze discussie over het feit dat je termen moest beoordelen of het voornamen waren of niet.
Bestaat er een site "Voornamen.be" waar alle mogelijke voornamen in alle mogelijke spellingsvormen voorkomen ?
Als je de oplossing van een probleem niet netjes op papier kan zetten, dan kan je ook de macro niet schrijven.
In deze vond ik de opmerkingen van TS zwaar beneden niveau, ik heb een schot voor de boeg gelost, waarbij er, in een tabel, een aantal termen konden ingegeven worden, die normaliter nooit in een voornaam zouden kunnen voorkomen. Die lijst kon steeds verder aangevuld worden.
Na enkele keren had je zo met een 20-tal termen je lijst al voor pak-en-beet 80% kunnen opschonen en de resterende 20% kon je dan eventueel met een 0 overschrijven en dus in de volgende run ook doen verdwijnen.
Ik denk dat TS dat nooit echt van dicht bekeken heeft.
Tot daar mijn aversie !