Zoals uitgelegd in een vorige thread, ben ik het maken van een macro om Solidworks-bladen te hernoemen bij het opslaan. Ik denk dat het voor sommigen van jullie net zo handig kan zijn.
Ik ben bijna aan het einde van mijn Latijn! Ik heb nog maar één blaasbalg over.
Het principe :
De macro start wanneer u opslaat (deze bevindt zich in het gebruikersformulier dat verborgen blijft).
Als de naam van het blad het woord "Blad" bevat, wordt een andere naam gevraagd.
De macro moet controleren of de naam die aan het werkblad is gegeven niet leeg is en niet hetzelfde is als een ander blad (vorig of volgende).
Om te controleren of de naam niet leeg is, geen probleem, maar mijn probleem ontstaat wanneer ik moet vergelijken dat de naam niet identiek is aan die van een ander blad. Het werkt voor de vorige bladen, maar niet altijd voor de volgende. Als u bijvoorbeeld een lege naam voorstelt en vervolgens de naam van het volgende blad, wordt het invoervak niet opnieuw opgestart wanneer het zou moeten, totdat de voorgestelde naam uniek is. Dit komt omdat als dit niet het geval is, de macro stopt en de naam van het blad niet wordt gewijzigd.
Dus mijn probleem moet zijn met de lus.
Als iemand de wonderoplossing had, zou het geweldig zijn!
Ik ken VBA niet, dus ik kan je code niet analyseren, maar vanuit een algoritmen: aan het begin van de uitvoering maak ik een lijst met bladeren en vervolgens vergelijk ik het antwoord met de inhoud van de lijst, een lijst die wordt bijgewerkt wanneer de naam wordt gevalideerd, enzovoort voor de volgende bladen.
Ik zal proberen anders te werk te gaan door uw idee te gebruiken, maar het lijkt mij niet geschikt omdat we het aantal startbladen niet kennen. Dit maakt het moeilijk om hun namen op te slaan als het er veel zijn.
Als een VBA-kenner tijd had om een kijkje te nemen. ;)
Ja, het brult in een lus die ik in de reacties heb aangegeven.
De database moet de door de gebruiker voorgestelde Nou_nom_feuille waarde vergelijken met de namen van reeds bestaande bladen (de bladen voor en na de bladen die hernoemd moeten worden).
En het werkt niet in alle gevallen, vooral als het blad met dezelfde naam zich bevindt na het blad dat moet worden hernoemd.
Van mijn kant moest ik ook de Do Untill ... Loop en Do... Loop Until omdat het anders niet zou werken.
Nu lijkt het bijna te werken, laat me het uitleggen:
- het detecteert wanneer het blad het woord "Leaf" bevat.
- hij vraagt me dan om een andere naam
- Als de naam hetzelfde is als op een ander blad of leeg is, zal het me opnieuw vragen.
Het probleem is dat wanneer ik een correcte naam zet (niet leeg en anders dan de naam van de andere vellen), het deze markeert (na de tweede keer) maar me nog steeds om een naam vraagt.
Ik denk dat er nog steeds een serieus probleem is met de lus, maar hoe hard ik ook probeer, het is onmogelijk om er vanaf te komen...
Ik dank bij voorbaat als er iemand is die de tijd en de motivatie heeft om te proberen te achterhalen waar het probleem vandaan komt.
Sterker nog, ik dacht dat mijn lus werkte (omdat de Inputbox weer verscheen toen ik een al bestaande om gaf), maar dat is niet het geval. Dit is de voorwaarde om na te gaan of de voorgestelde naam voor de plaat al bestaat in een andere plaat die verouderd is. Mijn lus met j werkt helemaal niet.
Hoe dan ook, nogmaals bedankt voor je hulp, maar ik denk dat ik daar ga opgeven, want het werkt niet.
En hoe dan ook, ik kan de macro niet starten bij het opstarten, zelfs niet met de \m-methode in de snelkoppeling, omdat het de macro die de gebruikersvorm activeert niet start.
Als ik heb geholpen, kies dan een van mijn antwoorden door hieronder op "markeer dit antwoord als het beste antwoord" te klikken, hiermee kan ik een paar punten verdienen!