poniedziałek, 10 lutego 2014

Przycisk w relacji do komórki wynikowej

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:
1Private Sub CommandButton1_Click()
2    Me.CommandButton1.TopLeftCell.Offset(0, -1) = _
3            Me.CommandButton1.TopLeftCell.Offset(0, -1) - 1
4End Sub

Kod dla przycisku zielonego, który zwiększa ilość elementów w kolumnie B będzie więc następujący:
1Private Sub CommandButton2_Click()
2    Me.CommandButton2.TopLeftCell.Offset(0, -2) = _
3            Me.CommandButton2.TopLeftCell.Offset(0, -2) + 1
4End Sub

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.

Brak komentarzy:

Prześlij komentarz