Wpis z mikrobloga

#excel #pytaniedoeksperta

Cześć,
Czy ktoś wie jak w szybki sposób (albo czy w ogóle się da) skopiować przycisk, tak żeby wykonywał tą samą funkcję, ale dla następnego wiersza? Przeciąganie przycisku daje ten sam kod (duh) - czy w VBA jest jakiś odpowiednik przycisku "Użyj odwołań względnych"? Próbowałem się bawić w ActiveCell.Offset, ale coś mi nie idzie.
Na przykładzie (mega uproszczonym) - mam przycisk w komórce B1, który zwiększa wartość A1 o 1. I potrzebuję mieć taki sam przycisk dla 80 następnych wierszy.
Musi być to na guziku, bo z excela będą też korzystać osoby bardzo mało ogarnięte komputerowo.
  • 15
@Thermao od pozycji przycisku, jeszcze nie robiłem. Będzie problem, bo przycisk nie jest w komórce... Chyba, że zrobisz event na kliknięcie w jakąś komórke. No.. male okno dialogowe informujące użytkownika, że teraz ma kliknąć wiersz gdzie makro ma dzilac
@Thermao: Możesz w konstrukcji makra zawrzeć odwołanie do nazwy przycisku je wywołującego (Application.Caller) i w nazwie przycisku przemycić numer docelowego wiersza, choć oczywiście będzie to wymagało korekty tej nazwy po skopiowaniu. Samo kopiowanie oczywiście też można zrobić makrem, wtedy odpadnie ręczna robota :)

Sub makro()

MsgBox Application.Caller

End Sub

Potencjalnie można też odwołać się do indeksu obiektu, jakim jest przycisk, ale to trochę śliska sprawa, bo chyba nie ma nad tą
@Thermao: w sensie na arkuszu ma byc 80 przyciskow? Nie ma lepszej metody? Np. « Grazynko, kiknij wiersz, ktory chcesz zmienic, a potem 1 przycisk na wstazce » ?
via Wykop Mobilny (Android)
  • 0
@taju: bardzo mocno uproszczając tak. Ogólnie w samych przyciskach chodzi o zuzycie materialu. Kilka guzików obok siebie w danym wierszu z ilosciami i dana osoba ma wdusic guzik z ilością jaką została zużyta. Button jest chałupniczym rozwiązaniem problemu "mi się naklikało i wszystko znikło", co zdarzało się notorycznie, bo zamiast klikac w wstążkę wpisywali ilosc w komorke po czym dopiero po pół dnia kapowali się że coś jest nie tak i
i w nazwie przycisku przemycić numer docelowego wiersza


@DwaNiedzwiedzie: skoro to ma być komórka w kolumnie po lewej, to chyba nie ma takiej potrzeby

@Thermao: coś takiego powinno działać, nie mam możliwości teraz przetestowwać:

Sub Przycisk4_Click()
Dim r As Range
Set r = Arkusz1.Shapes(Application.Caller).TopLeftCell.Offset(0, -1)
r.Value = r.Value + 1
End Sub
@Thermao:
Cos w tym stylu moze:

Sub addone()
Dim myrng as Range
Set myrng = cells(activesheet.buttons(application.caller).topleftcell.row, X)
myrng = myrng +1
End Sub

Zamiast X numer kolumny, ktora w danym wierszu chcesz zmieniac.
I wstaw zwykle buttons, nie activex i przypisz do kazdego tego suba (wystarczy raz a potem kopiuj wklej) Przyciski (lewy gorny rog) musza byc w tym wierszu, co komorka do zmiany.
@DwaNiedzwiedzie:

mam przycisk w komórce B1, który zwiększa wartość A1 o 1

Nie bardzo wiem, gdzie tu jest miejsce na niepewność... Skoro ma być 80 przycisków w 80 wierszach to bez względu na to, który przycisk gdzie się znajdzie zawsze będzie robił to samo - zmieniał wartość komórki z tego wiersza.
Skoro ma być 80 przycisków w 80 wierszach to bez względu na to, który przycisk gdzie się znajdzie


@brak_nicku: Pod warunkiem, że pani Grażynka nie zmniejszy wysokości wiersza lub nie przesunie nieco przycisku tak, że jego róg wyjdzie poza bieżący wiersz i dwa przyciski zaczną robić to samo :) W podejściu z nazwami przemieszanie przycisków wydaje mi się mniej prawdopodobne.
@Thermao:

Jeszcze takie cos:

1. Jesli zamiast mojego X dasz :
activesheet.buttons(application.caller).topleftcell.column-1
To bedzie dzialalo dla danego wiersza, jedna kolumne przed przyciskiem

2. Jesli zamiast +1 dasz
myrng = myrng + val(activesheet.buttons(application.caller).caption)

To potem wystarczy tekst (caption) na przycisku zmienic na cos w stylu
+5 butelek
+3 kurczaki
Itp
I bedzie dzialac ;) dodajac do komorki wartosc z tekstu przycisku
@DwaNiedzwiedzie: chyba troszkę szukasz problemów na siłę, bo tak jak napisał @taju - nawet przy domyślnych ustawieniach ja nie potrafię tak modyfikować wysokości wierszy, żeby przycisk znalazł się w innej komórce. Jak pani Grażynka lubi suwać przyciski, to przemieści i pięć wierszy niżej, ale na to wyjście jest banalne - zablokować kolumnę z przyciskami i włączyć ochronę arkusza - byle edytuj obiekty nie było dostępne.