Witam.
Posiadam formularz w calcu, który wypełniam przy użyciu makra. W formularzu tym, w komórce C17 mam osadzoną listę rozwijaną z nazwiskami.
Zadaniem makra w pierwszym kroku jest: skopiowanie z komórki C17 nazwiska do schowka, następnie przechodzi do Arkusza w drugim pliku, wkleja zawartość schowka do komórki B4 i uruchamia się drugie makro w celu zebrania odpowiednich danych.
Problem polega na tym, że makro pierwsze, uruchomione przyciskiem (formantem) nie ustawia focusa na komórce C17 i nie wykonuje kodu: kopiuj do schowka, natomiast do komórki B4 wstawia ze schowka coś co było kopiowane wcześniej i dzieją się straszności!
To samo makro uruchomione z Menu Narzędzia → Makra → Uruchom makro – działa!, działa również poprzez przypisany skrót z klawiatury.
Czy jest na to sposób? A może problem ten nadaje się do zgłoszenia?
Załączam przykład.
(Przepraszam za wypracowanie)
[SOLVED] Makro „kopiuj” przypisane do formantu nie działa!
[SOLVED] Makro „kopiuj” przypisane do formantu nie działa!
- Załączniki
-
- Kopiuj.ods
- (11.29 KiB) Pobrany 145 razy
Ostatnio zmieniony czw sty 31, 2019 11:22 pm przez A_P, łącznie zmieniany 1 raz.
LinuxMint 18, Windows 7, LibreOffice (6.0.7)-64bit
Re: Makro „kopiuj” przypisane do formantu nie działa!
Makro nagrałeś funkcją nagrywania makr. OK. Ale aby się wykonało musisz w przycisku przypisać je do "Naciśnięto przycisk myszy" a nie "Wykonaj akcję".
Przy okazji. Powinieneś zmodyfikować swoje makro. Zawiera ono operację Copy. Zostaje więc skopiowana zawartość komórki ze wszystkimi jej właściwościami, czyli kopia jest także komórką z opcja sprawdzania poprawności danych. Można otworzyć w niej listę rozwijaną i zobaczyć wszystkie nazwiska (w załączonym przykładzie wstawiasz kopie do tego samego arkusza, do komórki C5). Ostatnią rejestrowaną przez ciebie czynnością powinno być CTRL+SHIFT+C, czyli wklej specjalnie z wybranym sposobem wstawiania.
Warto też podczas rejestrowania nie odwoływać się do adresu ale do nazwy komórki. Kiedy zreorganizujesz arkusz i przeniesiesz tę komórkę w inne miejsce makro przestanie działać. Zatem nadaj komórce C17 nazwę np. "osoba". Aby podczas nagrywania makra przejść do tej komórki wskaż ją, wybierając z listy nazw dostępnych po rozwinięciu "Obszaru arkusza". To jest to małe okienko w lewym górnym rogu, w którym zazwyczaj widać aktualny adres komórki. Jeśli w arkuszu są zdefiniowane jakieś nazwy, to rozwijając listę można od razu przejść do wybranego zakresu.
Przy okazji. Powinieneś zmodyfikować swoje makro. Zawiera ono operację Copy. Zostaje więc skopiowana zawartość komórki ze wszystkimi jej właściwościami, czyli kopia jest także komórką z opcja sprawdzania poprawności danych. Można otworzyć w niej listę rozwijaną i zobaczyć wszystkie nazwiska (w załączonym przykładzie wstawiasz kopie do tego samego arkusza, do komórki C5). Ostatnią rejestrowaną przez ciebie czynnością powinno być CTRL+SHIFT+C, czyli wklej specjalnie z wybranym sposobem wstawiania.
Warto też podczas rejestrowania nie odwoływać się do adresu ale do nazwy komórki. Kiedy zreorganizujesz arkusz i przeniesiesz tę komórkę w inne miejsce makro przestanie działać. Zatem nadaj komórce C17 nazwę np. "osoba". Aby podczas nagrywania makra przejść do tej komórki wskaż ją, wybierając z listy nazw dostępnych po rozwinięciu "Obszaru arkusza". To jest to małe okienko w lewym górnym rogu, w którym zazwyczaj widać aktualny adres komórki. Jeśli w arkuszu są zdefiniowane jakieś nazwy, to rozwijając listę można od razu przejść do wybranego zakresu.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Re: Makro „kopiuj” przypisane do formantu nie działa!
Tu się nie zgodzę, aby to udowodnić wstaw sobie nowy przycisk i podepnij pod niego("Wykonaj akcję") jakieś inne makro, chociażby:Jermor pisze:Ale aby się wykonało musisz w przycisku przypisać je do "Naciśnięto przycisk myszy" a nie "Wykonaj akcję".
Kod: Zaznacz cały
Sub test()
Print "YES"
End Sub
Druga cześć twojej wypowiedzi -100% trafna.
Do autora wątku: rozważ napisanie makra w profesjonalny sposób. Zacznij od lektury https://wiki.openoffice.org/wiki/Docume ... ASIC_Guide
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Makro „kopiuj” przypisane do formantu nie działa!
belstar ma rację. A tyle lat o tym nie wiedziałem !!!
Jednak gdy przypisałem makro do "Naciśnięto..." to zadziałało, chociaż z tym felernym kopiowaniem.
Gdy nagrałem to makro samodzielnie i dodałem do niego twój Print, to podpięte pod "Wykonaj akcję" realizuje Print ale nie realizuje prawidłowo reszty.
Jednak gdy przypisałem makro do "Naciśnięto..." to zadziałało, chociaż z tym felernym kopiowaniem.
Gdy nagrałem to makro samodzielnie i dodałem do niego twój Print, to podpięte pod "Wykonaj akcję" realizuje Print ale nie realizuje prawidłowo reszty.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Re: Makro „kopiuj” przypisane do formantu nie działa!
Podejrzewam że chodzi o bezwładność systemu, wstawienie spowolniej może pomóc, ale to nie jest dobry pomysł. Złem pomysłem jest też wykorzystanie schowka do tak prostego zadania. Poniżej kod jak to powinno być zrealizowane.
Kod: Zaznacz cały
Sub test()
Dim Doc As Object
Dim Sheet As Object
Dim SourceCell As Object
Dim TargetCell As Object
Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Arkusz2")
SourceCell = Sheet.getCellRangeByName("C17")
TargetCell = Sheet.getCellRangeByName("B4")
TargetCell.String = SourceCell.String
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Makro „kopiuj” przypisane do formantu nie działa!
Dzięki Panowie za zainteresowanie i szybką reakcję.
Ten formularz, którego używam pamięta jeszcze wersję 3.xx i wówczas nie było problemów.
Używane makro porusza się pomiędzy dwoma otwartymi plikami.
Tak do kopiowania C17 i wstawiania jego zawartości w obrębie tego samego arkusza nie jest potrzebny schowek.
Niechlujnie nagrane makro w przykładzie miało pokazać problem braku reakcji na naciśnięcie „Przycisku”. Spowolnienia też nie pomagały!
Próbowałem kodów według A. Pitonyaka z takim samym skutkiem jak z tym nagranym.
Wszystkie kody odwołujące się do adresów bez listy rozwijanej wstawiały focus do komórki i działały a z listą nie.
Próbowałem przypisywać makro do wielu wydarzeń formantu, ale do „Naciśnięto przycisk myszy” nie doszedłem.
Faktycznie zadziałało!
Za wszystkie wskazówki i rozwiązanie problemu Bardzo Wam dziękuję i pozdrawiam.
Ten formularz, którego używam pamięta jeszcze wersję 3.xx i wówczas nie było problemów.
Używane makro porusza się pomiędzy dwoma otwartymi plikami.
Tak do kopiowania C17 i wstawiania jego zawartości w obrębie tego samego arkusza nie jest potrzebny schowek.
Niechlujnie nagrane makro w przykładzie miało pokazać problem braku reakcji na naciśnięcie „Przycisku”. Spowolnienia też nie pomagały!
Próbowałem kodów według A. Pitonyaka z takim samym skutkiem jak z tym nagranym.
Wszystkie kody odwołujące się do adresów bez listy rozwijanej wstawiały focus do komórki i działały a z listą nie.
Próbowałem przypisywać makro do wielu wydarzeń formantu, ale do „Naciśnięto przycisk myszy” nie doszedłem.
Faktycznie zadziałało!
Za wszystkie wskazówki i rozwiązanie problemu Bardzo Wam dziękuję i pozdrawiam.
LinuxMint 18, Windows 7, LibreOffice (6.0.7)-64bit