Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 59655 Skopiuj do schowka Wyświetlenie zdjęcia po najechaniu myszką na hiperłącze
Autor Wiadomość
R0bson
Fan Excela


Posty: 62
Wysłany: 07-12-2017, 21:35   Wyświetlenie zdjęcia po najechaniu myszką na hiperłącze

Prośba o napisanie makra, które po najechaniu na hiperłącze w komórce wyświetli zdjęcie oraz usunie jeżeli ponownie przesuniemy myszkę. Czy takie makro będzie wydajne dla kilku tysięcy komórek z linkami do zdjęć?
ID posta: 335729 Skopiuj do schowka
 
 
R0bson
Fan Excela


Posty: 62
Wysłany: 07-12-2017, 22:25   

Załączam xls z prawie rozwiązaniem. Po najechaniu na komórkę A1 lub C1 pojawia się zdjęcie ale, żeby je usunąć trzeba najechać na B2. Jakby tak zdjęcie usuwało się od razu po zjechaniu myszką to byłoby idealnie.. Pomożecie?

MOUSE_OVER_v2.xlsm
Pobierz Plik ściągnięto 246 raz(y) 15.84 KB

ID posta: 335731 Skopiuj do schowka
 
 
euronecik
Exceloholic


Posty: 177
Wysłany: 19-12-2017, 10:32   

Spróbuj dodać komentarz do komórki i wypełnić tło zdjęciem.
Powinno działać dokładnie tak jak to opisujesz.
Zobacz w załączniku, Arkusz2

MOUSE_OVER_v2.xlsm
Pobierz Plik ściągnięto 216 raz(y) 31.7 KB

ID posta: 336477 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3142 razy
Posty: 10399
Wysłany: 21-12-2017, 03:47   

R0bson napisał/a:
dla kilku tysięcy komórek z linkami do zdjęć
euronecik napisał/a:
Spróbuj dodać komentarz do komórki i wypełnić tło zdjęciem.
To to będzie ważyć!

W technice RollOver coś musi wzbudzać działanie. Tym cosiem jest formuła HIPERŁĄCZE połączona z własną funkcją. Kiedy kursor myszy usuniemy znad tak spreparowanej komórki, to przestaje działać formuła, lecz pozostaje stan jaki zainicjowano, gdy kursor był nad rzeczoną komórką. Dlatego ktoś wymyślił, by w sąsiednich komórkach wstawić inne spreparowane HIPERŁĄCZE do usuwania obrazków.
By zlikwidować hiperłącza resetujące, trzeba dać coś w zamian. Doszedłem do wniosku, że mógłby być to hook zakładany na kursor myszy, by śledzić jego ruchy. Tyle, że hook ma to do siebie, że działa cały czas w tle, co będzie grzało procesor ;-) Dlatego starałem się ograniczyć działanie hook-a tylko do określonego, zdefiniowanego zakresu. Poza nim ma się wyłączyć.
Jak to działa?
Funkcja OnMouseOver jest wywoływana przez formułę HIPEŁĄCZE, powodując wstawienie obrazka. Póki kursor jest w obrębie tej komórki, to formuła niejako śledzi ruch kursora. Ale też w niej (funkcji OnMouseOver) zostanie włączony hook. Kiedy kursor będzie poza komórką z formułą, funkcję śledzenia przejmuje hook (funkcja LowLevelMouseProc). Hook sprawdza, czy kursor nie jest poza zdefiniowanym zakresem. Jeżeli jest poza, ma się wyłączyć i usunąć obrazek. Kiedy kursor ponownie pojawi się nad komórką z HIPERŁĄCZE-m cała zabawa rozpoczyna się od początku.
Definicja zakresu w jakim ma działać hook znajduje się w procedurze Hook_Mouse. Należy albo zastosować sztywny zakres, albo dynamiczny - wyliczany wg określonych przez nas założeń. Np. może to być wyliczony zakres w kolumnie A od pierwszej komórki do ostatniej niepustej. Można też użyć SpecialCell, by znaleźć komórki z formułami, a następnie zbadać, które zawierają Formułę HIPERŁĄCZE oraz funkcję OnMouseOver. Jak tam sobie kto wymyśli.
W przykładzie specjalnie użyłem sztywnego zakresu i to mniejszego o jedną komórkę niż zakres z hiperłączami, by pokazać różnicę w zachowaniu się obrazka, który należy do zdefiniowanego zakresu i poza nim. Warto też porównać użycie procesora w Menadżerze zadań dla obu przypadków.
U mnie (XL 365) zauważyłem, że metoda Pictures.Insert nie radzi sobie z protokołem HTTPS. Drugi link nie wyświetla obrazka, natomiast trzeci link za każdym razem sypie błędem.

R0bson napisał/a:
Czy takie makro będzie wydajne dla kilku tysięcy komórek z linkami do zdjęć?
Lepsze to, niż jak wstawisz obrazki do skoroszytu, bo to będzie chodzić jak muł i ważyć jak wieża Eiffla. Jak zastosujesz metodę RollOver początkowo będzie ona chodzić powoli, gdyż każdy obrazek musi być pobrany z Internetu. Ale następne najechanie na już "odwiedzoną" komórkę powinno zadziałać szybciej, gdyż obraz nie jest ponownie pobierany ze źródła, tylko z cache-a. Ale z pewnością nie jest do rozwiązanie dla szybkich i wściekłych. ;-) Ponadto warto zadbać o to, by pobierać jak najmniejsze pliki, jeśli tylko mamy do wyboru.

Miłej zabawy. :mrgreen:

Artik

RollOver - podgląd obrazów z URL-a.xlsm
Pobierz Plik ściągnięto 186 raz(y) 25.78 KB

_________________
Persistence is a virtue in the world of programming.
ID posta: 336569 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe