Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70191 Skopiuj do schowka VBA a grupowanie danych
Autor Wiadomość
caelian
Stały bywalec Excelforum


Pomógł: 51 razy
Posty: 470
Wysłany: 19-02-2021, 15:19   VBA a grupowanie danych

Cześć

Znalazłem taki kod:
Kod:
groupRange.Cells(1).Ungroup


i mi ładnie działa.

Pytanie inne,
jak zweryfikować ile grupowań wierszy jest w danym skoroszycie kodem VBA?
ID posta: 400697 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 320 razy
Posty: 1564
Wysłany: 19-02-2021, 21:46   

Pytanie z gatunku tych, na temat istoty których ty wiesz wszystko, a inni nic ... :-/
Przybliż temat, zamieść kod, w którym to "polecenie" funkcjonuje, nie każ innym hipotetyzować.
ID posta: 400724 Skopiuj do schowka
 
 
caelian
Stały bywalec Excelforum


Pomógł: 51 razy
Posty: 470
Wysłany: 22-02-2021, 13:08   

chodzi o opcję grupowania danych w wierszach.
Jak to zrobić poziomu wstążki to wiem,

W VBA uzywa się do tego opcji Range().ungroup

jednakże jedna taka linia odgrupowuje tylko 1 zgrupowanie.

Jeśli wiersze mają np 4,5....x grup to X razy trzeba dopisywac kod .ungroup.

Dlatego pytam czy kodem VBA możemy zbadać plik i stwierdzić iż posiada X zgrupowań i wtedy pętlą np for each odgrupować wszystkie zgrupowania bez powtarzania kodu X razy.
ID posta: 400833 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 775 razy
Posty: 4174

Wysłany: 22-02-2021, 13:37   

Załącz plik.
.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie.
ID posta: 400835 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3096 razy
Posty: 10263
Wysłany: 22-02-2021, 15:34   

caelian napisał/a:
czy kodem VBA możemy zbadać plik i stwierdzić iż posiada X zgrupowań
Nie ma prostej właściwości, która Ci wskaże liczbę poziomów grupowania. Ale poniższa funkcja da radę (być może należy ją sobie nieco zmodyfikować, bo powstała ad hoc):
Kod:
Function OutlineLevelsCount(wks As Worksheet) As Long
  Dim rng As Range
  Dim lMax As Long
 
  For Each rng In wks.UsedRange.Rows
    If rng.OutlineLevel > lMax Then
      lMax = rng.OutlineLevel
    End If
  Next rng
 
  OutlineLevelsCount = lMax
End Function


caelian napisał/a:
i wtedy pętlą np for each odgrupować wszystkie zgrupowania bez powtarzania kodu X razy.
Może nie pętlą For Each, a zwykłą For...Next:
Kod:
Sub ConspectUngroup()
  Dim lOtlLvls As Long
  Dim i As Long
 
  lOtlLvls = OutlineLevelsCount(ActiveSheet)
  MsgBox lOtlLvls
 
  For i = 1 To lOtlLvls - 1
  'lub
  'For i = 2 To lOtlLvls
    ActiveSheet.Rows.Ungroup
  Next i

  'tylko do sprawdzenia
  lOtlLvls = OutlineLevelsCount(ActiveSheet)
  MsgBox lOtlLvls

End Sub


Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 400843 Skopiuj do schowka
 
 
caelian
Stały bywalec Excelforum


Pomógł: 51 razy
Posty: 470
Wysłany: 22-02-2021, 20:42   

dziekować :)
Póki co działa jak powinno
ID posta: 400862 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe