Strona 1 z 1

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

: czw sty 31, 2019 12:20 am
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

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

: czw sty 31, 2019 12:39 pm
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.

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

: czw sty 31, 2019 1:29 pm
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

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

: czw sty 31, 2019 3:14 pm
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.

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

: czw sty 31, 2019 3:31 pm
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

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

: czw sty 31, 2019 11:13 pm
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: