[SOLVED] Makro „kopiuj” przypisane do formantu nie działa!

Użytkowanie arkusza kalkulacyjnego
A_P
Posty: 38
Rejestracja: pt lis 18, 2016 3:49 pm

[SOLVED] Makro „kopiuj” przypisane do formantu nie działa!

Post autor: A_P »

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) :D
Załączniki
Kopiuj.ods
(11.29 KiB) Pobrany 164 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
Awatar użytkownika
Jermor
Posty: 2479
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Makro „kopiuj” przypisane do formantu nie działa!

Post autor: Jermor »

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.
AOO 4.1.16 (tylko Win 10), LO 25.8 (x64) na: Win 11, 10, Linux (Mint)
Ważne!
Jeśli twój problem został rozwiązany, edytuj swój pierwszy post, dopisując w temacie [SOLVED].
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Makro „kopiuj” przypisane do formantu nie działa!

Post autor: belstar »

Jermor pisze:Ale aby się wykonało musisz w przycisku przypisać je do "Naciśnięto przycisk myszy" a nie "Wykonaj akcję".
Tu się nie zgodzę, aby to udowodnić wstaw sobie nowy przycisk i podepnij pod niego("Wykonaj akcję") jakieś inne makro, chociażby:

Kod: Zaznacz cały

Sub test()
	Print "YES"
End Sub
Tak więc top nie jest przyczyną braku reakcji, a co jest, nie wiem.
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
Awatar użytkownika
Jermor
Posty: 2479
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Makro „kopiuj” przypisane do formantu nie działa!

Post autor: Jermor »

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.
AOO 4.1.16 (tylko Win 10), LO 25.8 (x64) na: Win 11, 10, Linux (Mint)
Ważne!
Jeśli twój problem został rozwiązany, edytuj swój pierwszy post, dopisując w temacie [SOLVED].
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Makro „kopiuj” przypisane do formantu nie działa!

Post autor: belstar »

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
A_P
Posty: 38
Rejestracja: pt lis 18, 2016 3:49 pm

Re: Makro „kopiuj” przypisane do formantu nie działa!

Post autor: A_P »

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. :bravo:
LinuxMint 18, Windows 7, LibreOffice (6.0.7)-64bit
ODPOWIEDZ