ID tematu: 70191
 |
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
|
|
|
 |
|
|
|
ąćęłńóś
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
umiejead
Excel Expert

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

|
|
 | ID posta:
400835
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
|
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
|
 |
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
|