Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA - Kształt wypełniający zakres Range

mikerek 21 Sty 2015 19:08 843 5
  • #1 21 Sty 2015 19:08
    mikerek
    Poziom 7  

    Cześć Wam.
    Mam dla was rzecz do przemyślenia, wiem że to lubicie :)
    Zastanawiam się czy jest możliwe, za pomocą VBA, stworzenie arkusza który na podstawie np. podanego zakresu będzie go "wypełniał" kształtem (prostokątem).

    Załóżmy więc, że mam arkusz z kilkoma wcześniej zdefiniowanymi zakresami Range np. "A4:D44", "DD444:DS543" itd. Chciałbym aby procedura stworzyła kształty, które będą równe graficznemu odwzorowaniu tych zakresów i pojawią się w tym też miejscu. Wiem brzmi zawile :)

    Gdy te kształty się już pojawią i zostaną przesunięte chciałbym żeby 2ga procedura zapisywała ich położenie do postaci jak wcześniej.

    Myślicie, że coś takiego jest możliwe? Jeżeli tak to macie jakieś pomysły jak to rozwiązać ?

    0 5
  • #2 21 Sty 2015 19:21
    Nemonek
    Poziom 27  

    Czy chodzi Ci o obrysowanie ramką podanych zakresów?

    0
  • #3 21 Sty 2015 19:32
    mikerek
    Poziom 7  

    Chodzi o oddzielny kształt, który można przesuwać nieżalenie od komórek np.
    Shapes.AddShape msoShapeRectangle
    Oczywiście może to być ramka, bo zawsze można ją wypełnić kolorem ;)

    0
  • Pomocny post
    #4 21 Sty 2015 19:48
    -psiak-
    Poziom 32  

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 22 Sty 2015 18:32
    mikerek
    Poziom 7  

    Genialne w swojej prostocie :) Dziękuję.
    Jeszcze będę miał kilka pytań pewnie wiec proszę nie zamykajcie.

    [scaliłem posty - adamas_nt]

    Można jakoś zablokować te kształty żeby przesuwały się tylko w osi x. Tak żeby nie można było przesuwać je tylko dól, góra ?

    0
  • #6 25 Sty 2015 09:54
    marek_s1
    Poziom 13  

    Aby kontrolować położenie potrzeba bieżących koordynat x,y kształtu.

    Wszystkie kształty wstawiane z menu Wstawianie/Kształty
    nie obsługują tzw. zdarzeń, więc nie jest możliwe wprost reagowanie na naciśniecie myszy oraz przesuwanie obiektu.

    Oczywiście są metody aby śledzić położenie obiektów, ale wymaga to użycia modułu nadzorującego i funkcji API.

    Proponuję inne rozwiązanie. Zamiast obiektu Kształty, wstawić Formant ActiveX np. Image.
    Formant ten obsługuje zdarzenia myszy, które da się tak oprogramować aby kształt zachowywał się tak jak chcesz.

    Formanty dostępne są z menu Deweloper/Wstaw formanty.

    0