Wyobraźmy sobie sytuację, w której w arkuszu, w określonej kolumnie umieszczamy szereg przycisków. Ich rola niech będzie banalna- zwiększenie/zmniejszanie wartości określonej komórki. Przyjmijmy jednak założenie, że komórka wynikowa znajduje się w określonej relacji do przycisku- np. jest to komórka bezpośrednio po lewej stronie względem naszego przycisku. Całość, w lekko rozbudowanym wariancie, niech zobrazuje poniższy schemat.
Chcąc zachować względną relację pomiędzy komórką wynikową a komórką nad którą znajdują się przyciski warto sięgnąć po .TopLeftCell. Właściwość ta występuje w przypadku większości obiektów warstwy rysunkowej i wskazuje komórkę (obiekt Range), nad którą znajduje się lewy górny róg naszego obiektu.
Kod dla przycisku czerwonego, który zmniejsza ilość elementów w kolumnie B będzie więc następujący:
Kod dla przycisku zielonego, który zwiększa ilość elementów w kolumnie B będzie więc następujący:
Zaletą stosowania takiego rozwiązanie jest wspomniana wyżej relacja w położeniu pomiędzy przyciskiem a kolumną wynikową. Pozwala nam to na wstawienie kilku kolumn po lewej stronie od kolumny B oraz wierszy powyżej naszego przykładowego rzędu. W obu przypadkach przyciski nadal będą działać w prawidłowej relacji do komórki wynikowej.
poniedziałek, 10 lutego 2014
poniedziałek, 3 lutego 2014
Przekazywanie danych do/ze schowka
W jaki sposób wykorzystać schowek (clipboard) w celu przekazania informacji pomiędzy różnymi aplikacjami, obszarami czy obiektami arkusza czy skoroszytu? W większości przypadków do dyspozycji mamy metody typu .Copy >> .Paste >> .PasteSpecial, które występują w modelu obiektowym całego pakietu Microsoft Office. Techniki te umożliwiają przekazywanie (kopiowanie) tabel, obiektów warstwy rysunkowej, tekstu, itp.
Istnieje jednak specjalna technika, która pozwala na zapełnienie schowka określonym tekstem, a także umożliwia pobranie aktualnych wartości ze schowka o ile dotyczą tekstu (lub wartości liczbowych). Prześledźmy to rozwiązanie w kolejnych krokach zaprezentowanych poniżej.
1. Niezbędne referencje
Metoda ta wymaga ustanowienia referencji do biblioteki 'Microsoft Forms 2.0 Object Library'. W tym celu w edytorze VBA wybieramy kolejno Menu >> Tools >> References >> odszukujemy i zaznaczamy w/w bibliotekę.
Wskazówka! Jeżeli w naszym projekcie utworzony jest choćby jeden UserForm oznaczać to będzie, że odpowiednie referencje zostały ustanowione.
2. Tworzenie instancji obiektu DataObject
Praca ze schowkiem wymagać będzie utworzenia obiektu, który umożliwi przekazywanie wartości. Poniższe linie tworzą tzw. wiązanie wczesne (early binding) do obiektu DataObject.
3. Dodanie tekstu do schowka
To pierwsza sytuacja, w której wykorzystamy uprzednio utworzony obiekt. W pierwszej kolejności zdefiniujemy jaki tekst ma trafić do schowka, ale dopiero kolejna linia procedury skieruje strumień tekstu w tą przestrzeń pamięci.
4. Pobranie wartości ze schowka
Także i w tym przypadku niezbędne będą 2 linie kodu- pierwsza pobiera zawartość schowka do naszego obiektu, a kolejne linie prezentują różne warianty skierowania strumienia tekstu: do okna immediate, do komórki czy też do zakresu komórek.
5. Uwagi końcowe.
Wykorzystanie obiektu DataObject umożliwia, przynajmniej na chwilę obecną, pracę wyłącznie z tekstem. Zawartość tego obiektu przechowywana jest tak długo jak długo istnieje obiekt. Zawartość przekazana do schowka pozostaje w nim także po wykasowaniu instancji obiektu DataObject.
Istnieje jednak specjalna technika, która pozwala na zapełnienie schowka określonym tekstem, a także umożliwia pobranie aktualnych wartości ze schowka o ile dotyczą tekstu (lub wartości liczbowych). Prześledźmy to rozwiązanie w kolejnych krokach zaprezentowanych poniżej.
1. Niezbędne referencje
Metoda ta wymaga ustanowienia referencji do biblioteki 'Microsoft Forms 2.0 Object Library'. W tym celu w edytorze VBA wybieramy kolejno Menu >> Tools >> References >> odszukujemy i zaznaczamy w/w bibliotekę.
Wskazówka! Jeżeli w naszym projekcie utworzony jest choćby jeden UserForm oznaczać to będzie, że odpowiednie referencje zostały ustanowione.
2. Tworzenie instancji obiektu DataObject
Praca ze schowkiem wymagać będzie utworzenia obiektu, który umożliwi przekazywanie wartości. Poniższe linie tworzą tzw. wiązanie wczesne (early binding) do obiektu DataObject.
3. Dodanie tekstu do schowka
To pierwsza sytuacja, w której wykorzystamy uprzednio utworzony obiekt. W pierwszej kolejności zdefiniujemy jaki tekst ma trafić do schowka, ale dopiero kolejna linia procedury skieruje strumień tekstu w tą przestrzeń pamięci.
4. Pobranie wartości ze schowka
Także i w tym przypadku niezbędne będą 2 linie kodu- pierwsza pobiera zawartość schowka do naszego obiektu, a kolejne linie prezentują różne warianty skierowania strumienia tekstu: do okna immediate, do komórki czy też do zakresu komórek.
5. Uwagi końcowe.
Wykorzystanie obiektu DataObject umożliwia, przynajmniej na chwilę obecną, pracę wyłącznie z tekstem. Zawartość tego obiektu przechowywana jest tak długo jak długo istnieje obiekt. Zawartość przekazana do schowka pozostaje w nim także po wykasowaniu instancji obiektu DataObject.
Subskrybuj:
Posty (Atom)
