Jak wyjaśniono w poprzednim wątku, tworzę makro do zmiany nazw arkuszy Solidworks podczas zapisywania. Myślę, że dla niektórych z was może to być równie wygodne.
Jestem już prawie u kresu sił! Został mi tylko jeden mieszek.
Zasada :
Makro uruchamia się po zapisaniu (jest ono zawarte w formularzu użytkownika, który pozostaje ukryty).
Jeśli nazwa arkusza zawiera słowo "Arkusz", wymagana jest inna nazwa.
Makro musi sprawdzić, czy nazwa nadana arkuszowi nie jest pusta i nie jest taka sama jak nazwa innego arkusza (poprzedniego lub następnego).
Aby sprawdzić, czy nazwa nie jest pusta, nie ma problemu, ale mój problem pojawia się, gdy muszę porównać, że nazwa nie jest identyczna z nazwą innego arkusza. Działa to w przypadku poprzednich arkuszy, ale nie zawsze w kolejnych. Na przykład, jeśli zaproponujesz pustą nazwę, a następnie nazwę następnego arkusza, pole wprowadzania nie zostanie ponownie uruchomione, gdy powinno, dopóki proponowana nazwa nie będzie unikatowa. Dzieje się tak, ponieważ jeśli tak się nie stanie, makro zatrzyma się i nie zmieni nazwy arkusza.
Więc mój problem musi być z pętlą.
Gdyby ktoś miał cudowne rozwiązanie, byłoby super!
Nie znam VBA, więc nie mogę analizować twojego kodu, ale z punktu widzenia algorytmu: na początku wykonywania stworzę listę liści, a następnie porównam odpowiedź z zawartością listy, listą, która jest aktualizowana po walidacji nazwy i tak dalej dla kolejnych arkuszy.
Postaram się postąpić inaczej, korzystając z Pańskiego pomysłu, ale wydaje mi się, że nie jest on odpowiedni, ponieważ nie znamy liczby kart startowych. Utrudni to przechowywanie ich imion, jeśli jest ich wiele.
Tak, ryczy w pętli, na którą zwróciłem uwagę w komentarzach.
Baza danych powinna porównywać proponowaną przez użytkownika wartość Nou_nom_feuille z nazwami już istniejących arkuszy (arkuszy przed i po arkuszu, którego nazwa ma zostać zmieniona).
I nie działa to we wszystkich przypadkach, zwłaszcza jeśli arkusz o tej samej nazwie znajduje się po tym, którego nazwę chcesz zmienić.
Ze swojej strony musiałem również odwrócić Do Until... Loop en Do... Loop Until ponieważ w przeciwnym razie to by nie zadziałało.
Teraz wydaje się, że to prawie działa, pozwólcie, że wyjaśnię:
- wykrywa, kiedy na arkuszu znajduje się słowo "Liść".
- Następnie mnie o inne imię
- Jeśli nazwa jest taka sama jak na innym arkuszu lub pusta, zapyta mnie ponownie.
Problem polega na tym, że gdy wpiszę poprawną nazwę (nie pustą i inną niż nazwa innych arkuszy), zaznacza ją (po drugim razie), ale nadal prosi mnie o nazwę.
Myślę, że nadal jest poważny problem z pętlą, ale bez względu na to, jak bardzo się staram, nie da się się jej pozbyć...
Z góry dziękuję, jeśli jest ktoś, kto ma czas i motywację, aby spróbować dowiedzieć się, skąd bierze się problem.
Faktycznie myślałem, że moja pętla zadziałała (bo Inputbox pojawił się ponownie, gdy podałem już istniejący om), ale tak nie jest. Jest to warunek sprawdzenia, czy proponowana nazwa arkusza istnieje już w innym arkuszu, który jest przestarzały. Moja pętla z j w ogóle nie działa.
W każdym razie jeszcze raz dziękuję za pomoc, ale myślę, że zamierzam się tam poddać, bo to nie działa.
W każdym razie nie mogę uruchomić makra podczas uruchamiania, nawet za pomocą metody \m w skrócie, ponieważ nie uruchamia ona makra, które uruchamia formularz użytkownika.
Jeśli pomogłem, proszę wybrać jedną z moich odpowiedzi, klikając poniżej "oznacz tę odpowiedź jako najlepszą odpowiedź", pozwala mi to zdobyć kilka punktów!