próbuję sobie poklikać coś w vba, nigdy wcześniej nie miałem styczności, więc oglądam to co na yt, czytam i na stacku przeglądam rozwiązania, ale #!$%@? mnie bierze ( ͡°͜ʖ͡°). 1. czy w standardowym edytorze makr w excelu idzie zawijać wiersze? pracować z tym nie idzie, ktoś sugerował po prostu pisanie w jakimś edytorze i wklejanie do excela 2. czy można mieć dowolną paletę kolorów przy edycji toggle button? poza tym co oferuje excel
no i główne pytanie. mam toggle button, chcę hide/show wiersze, które nie są obok siebie, kminię z range i areas, ale nie umiem into vba i mnie skutecznie ta toporność odstrasza. udało mi się ogarnąć coś takiego
Private Sub ToggleButton1_Click()
If ToggleButton1.Value Then Application.ActiveSheet.Range("2:5,7:13,15:21,23:29,31:37).EntireRow.Hidden = True ToggleButton1.Caption = "ungroup" Else Application.ActiveSheet.Range("2:5,7:13,15:21,23:29,31:37").EntireRow.Hidden = False ToggleButton1.Caption = "group weekly summaries" End If End Sub
no i działa, ale no nie będę wklepywał z palca zakresów, a poza tym przy większej ilości jest 1004 object error i cześć. jak tu zadeklarować zmienną i dobrze to zrobić? próbowałem tak: If ToggleButton1.Value Then Dim dupa As Areas Set dupa = Range("2:5,7:13,15:21,23:29 i tak dalej").Areas tak by potem w If zamiast do range odnieść się do tej dupy, ale to nie działa.
ktoś pomoże? ( ͡°ʖ̯͡°) czytałem o odwoływaniu się do zakresów, ale głównie pojawiało się to w kontekście kolumn a ja chcę niestandardowe wiersze, które się nie stykają
@tolstyy00: Co do 1 to zawijasz wiersze podkreślnikiem Co do 2 nie mam pojęcia Jeśli wiersze które chcesz ukryć mają regularne odstępy to możesz użyć pętli for, a jeśli nie to chyba nie ma innego sposobu niż ręczne wpisywanie.
@Pan_Cerny: zrobiłem tak! ale, że nie umiem into vba to rozbiłem na dwa przyciski ( ͡°͜ʖ͡°) jedno zarejestrowane makro mi chowało, drugie odkrywało. mimo wszystko albo sobie dane inaczej ułoże i jednym buttonem pochowam, albo tak jak mówisz pobawię się rejestrowaniem
@Pan_Cerny: jeszcze inaczej pokombinowałem. nie umiałem tak zadeklarować range ani area, by móc się do tego odwołać w pętli, rejestrowanie makra działa, ale wygodniej mi się obsługuje togglebutton. ale działa takie odwołanie: If ToggleButton1.Value Then Application.ActiveSheet.Range("2:5,7:13,15:21,23:29").EntireRow.Hidden = True Application.ActiveSheet.Range("31:37,39:45,47:53").EntireRow.Hidden = True i unikam 1004 error, bo sobie dzielę na sztywno interesujące mnie wiersze w nawiasie na małe fragmenty. aż zęby bolą jak się na to patrzy, ale działa ( ͡
@DwaNiedzwiedzie: o tej spacji wykminiłem! i już? tyle czytałem o tych zmiennych, że musi być areas albo range i potem odpowiednie odwołanie w pętli a tu takie range(zakr).select da radę :D. tak, działa do 255 znaków, więc jak chciałem podać zmienny zakres i wklepałem prawie 300 wierszy to się dziwiłem gdzie błąd jest a dopiero później znalazłem info o tych wartościach. próbowałem też duże zakresy połączyć union, ale nie potrafiłem.
@DwaNiedzwiedzie: rivate Sub ToggleButton4Click() If ToggleButton4.Value Then Application.ActiveSheet.Range("2:5,7:13,15:21,23:29,31:37,39:45,47:53,55:61,63:69,71:77,79:85,87:93").EntireRow.Hidden = True Application.ActiveSheet.Range("95:101,103:109,111:117,119:125,127:133,135:141,143:149,151:157,159:165,167:173,175:181,183:189") .EntireRow.Hidden =
próbuję sobie poklikać coś w vba, nigdy wcześniej nie miałem styczności, więc oglądam to co na yt, czytam i na stacku przeglądam rozwiązania, ale #!$%@? mnie bierze ( ͡° ͜ʖ ͡°).
1. czy w standardowym edytorze makr w excelu idzie zawijać wiersze? pracować z tym nie idzie, ktoś sugerował po prostu pisanie w jakimś edytorze i wklejanie do excela
2. czy można mieć dowolną paletę kolorów przy edycji toggle button? poza tym co oferuje excel
no i główne pytanie. mam toggle button, chcę hide/show wiersze, które nie są obok siebie, kminię z range i areas, ale nie umiem into vba i mnie skutecznie ta toporność odstrasza.
udało mi się ogarnąć coś takiego
Private Sub ToggleButton1_Click()
If ToggleButton1.Value Then
Application.ActiveSheet.Range("2:5,7:13,15:21,23:29,31:37).EntireRow.Hidden = True
ToggleButton1.Caption = "ungroup"
Else
Application.ActiveSheet.Range("2:5,7:13,15:21,23:29,31:37").EntireRow.Hidden = False
ToggleButton1.Caption = "group weekly summaries"
End If
End Sub
no i działa, ale no nie będę wklepywał z palca zakresów, a poza tym przy większej ilości jest 1004 object error i cześć. jak tu zadeklarować zmienną i dobrze to zrobić? próbowałem tak:
If ToggleButton1.Value Then
Dim dupa As Areas
Set dupa = Range("2:5,7:13,15:21,23:29 i tak dalej").Areas
tak by potem w If zamiast do range odnieść się do tej dupy, ale to nie działa.
ktoś pomoże? ( ͡° ʖ̯ ͡°) czytałem o odwoływaniu się do zakresów, ale głównie pojawiało się to w kontekście kolumn a ja chcę niestandardowe wiersze, które się nie stykają
Co do 2 nie mam pojęcia
Jeśli wiersze które chcesz ukryć mają regularne odstępy to możesz użyć pętli for, a jeśli nie to chyba nie ma innego sposobu niż ręczne wpisywanie.
zacznij rejestrować makro, zrób to, co chcesz, żeby robiło Twoje makro, podejrzyj jak wygląda kod nagranego makra, dokoduj po swojemu.
mimo wszystko albo sobie dane inaczej ułoże i jednym buttonem pochowam, albo tak jak mówisz pobawię się rejestrowaniem
If ToggleButton1.Value Then
Application.ActiveSheet.Range("2:5,7:13,15:21,23:29").EntireRow.Hidden = True
Application.ActiveSheet.Range("31:37,39:45,47:53").EntireRow.Hidden = True
i unikam 1004 error, bo sobie dzielę na sztywno interesujące mnie wiersze w nawiasie na małe fragmenty. aż zęby bolą jak się na to patrzy, ale działa ( ͡
Zakres możesz zdefiniować w zmiennej:
zakr =
i już? tyle czytałem o tych zmiennych, że musi być areas albo range i potem odpowiednie odwołanie w pętli a tu takie range(zakr).select da radę :D.
tak, działa do 255 znaków, więc jak chciałem podać zmienny zakres i wklepałem prawie 300 wierszy to się dziwiłem gdzie błąd jest a dopiero później znalazłem info o tych wartościach.
próbowałem też duże zakresy połączyć union, ale nie potrafiłem.
If ToggleButton4.Value Then
Application.ActiveSheet.Range("2:5,7:13,15:21,23:29,31:37,39:45,47:53,55:61,63:69,71:77,79:85,87:93").EntireRow.Hidden = True
Application.ActiveSheet.Range("95:101,103:109,111:117,119:125,127:133,135:141,143:149,151:157,159:165,167:173,175:181,183:189")
.EntireRow.Hidden =
Set zakres = Rows(2)
For w = 3 To 285
If (w - 6) Mod 8 Then Set zakres =
@DwaNiedzwiedzie o ty śmieszku z tą matmą ( ͡° ͜ʖ ͡°)
spokojnie! zrozumiem to jak w wolnej chwili wrócę do tego arkusza. dziękuję za Twoją pomoc! ʕ•ᴥ•ʔ