ID tematu: 27792
 |
Tabela przestawna-filtr. |
| Autor |
Wiadomość |
canto
EXCELent Man


Posty: 113
|
Wysłany: 2012-02-03, 16:10 Tabela przestawna-filtr.
|
|
|
Witam wszystkich,
mam problem z filtrem w tabeli przestawnej, chcę aby za każdym razem tabela była odświeżana dla zmiennej rok
Póki co napisałem coś takiego:
| Kod: | Range("AV2").Select
ActiveSheet.PivotTables("Tabela przestawna2").PivotCache.Refresh
ActiveSheet.PivotTables("Tabela przestawna2").PivotFields ("Rok")
For i = 1 To .PivotItems.Count
If .PivotItems(i).Name = rok Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
Next i |
Jednak makro mi się wysypuje.
Proszę o uwagi.
Pozdrawiam, |
_________________ canto |
|
 | ID posta:
147326
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Kaper
Excel Expert


Pomógł: 1152 razy Posty: 1626
|
Wysłany: 2012-02-03, 16:20
|
|
|
"się wysypuje" jest super-ogólnym określeniem błędu (znaczy ze wskazaniem miejsca i pokazaniem danych dla których pojawia się bład). pewnie, że lepiej niż "wyświetla błąd" bo wysypuje jednoznacznie pokazuje, że jest to bład czasu wykonania. no ale to dalej dość nieprecyzyjnie
ale sięgam po niezawodne narzędzie
i ... pierwsze podejrzenie - może masz w którymś momencie działania pętli sytuację, kiedy wszystkie .PivotItems(i).Visible = False i wtedy dostajesz bład 1004. jeśli tak, to np. najpierw ustaw wszystkie na widoczne a potem schowaj wszystkie poza wybranym.
Pozdrawiam, |
_________________ Kaper
Każda trójwymiarowa zwarta i jednospójna rozmaitość topologiczna bez brzegu jest homeomorficzna ze sferą trójwymiarową. Czasem trzeba poczekać sto lat żeby się upewnić. |
|
 | ID posta:
147330
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
canto
EXCELent Man


Posty: 113
|
Wysłany: 2012-02-06, 15:49
|
|
|
Już sią poprawiam a obrazek mnie po prostu rozbił
Błąd się pojawia na samym etapie wykonywania makra:
| Kod: | Range("AV2").Select
ActiveSheet.PivotTables("Tabela przestawna2").PivotCache.Refresh
ActiveSheet.PivotTables("Tabela przestawna2").PivotFields ("Rok")
For i = 1 To | .PivotItems. | Kod: | Count
If .PivotItems(i).Name = rok Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
Next i |
Zmienna rok może przyjmować różne wartości, obecnie w filtrze wykorzystuję rok=2012, pozostałe są od puste (tzn, 2007, 2008, 2009, 2010 i 2011 nie są zaznaczone a tylko 2012).
Oczywiście za rok moją zmienną rok będzie 2013, wtedy chciałbym aby z automatu w filtrze 2012 było również puste.
Z góry dziękuję za uwagi, może coś się z kuli wyczaruje
Pozdrawiam,
1.JPG
|
 |
| Plik ściągnięto 184 raz(y) 9.19 KB |
|
_________________ canto |
|
 | ID posta:
147638
|
|
|
 |
Kaper
Excel Expert


Pomógł: 1152 razy Posty: 1626
|
Wysłany: 2012-02-06, 16:01
|
|
|
Fajnie, że obrazek się spodobał. Chyba jednak za słabo przybliżała kula.
Nie zauważyłem kropki.
Poprzednia uwaga dalej obowiązuje (pewnie w którymś momencie z tym problemem się zetkniesz) ale na razie ... może bardziej brakuje with? A może jest poza widocznym dla nas obszarem? Jeśli jednak go nie ma - dopisz.
| Kod: | With ActiveSheet.PivotTables("Tabela przestawna2").PivotFields ("Rok")
For i = 1 To .PivotItems.Count
.PivotItems(i).Visible = True
Next i
For i = 1 To .PivotItems.Count
If .PivotItems(i).Name <> rok Then _
.PivotItems(i).Visible = False
Next i
End With |
Pozdrawiam, |
_________________ Kaper
Każda trójwymiarowa zwarta i jednospójna rozmaitość topologiczna bez brzegu jest homeomorficzna ze sferą trójwymiarową. Czasem trzeba poczekać sto lat żeby się upewnić. |
|
 | ID posta:
147639
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
canto
EXCELent Man


Posty: 113
|
Wysłany: 2012-02-08, 08:45
|
|
|
Śmiga jak należy, kula niezawodna:D
Pozdrawiam,
[ Dodano: 2012-02-07, 09:53 ]
A jednak błąd 1004 pojawił się dzisiaj, trochę przekombinowałem (załącznik).
To znaczy dodałem jeszcze jeden filtr w postaci numeru tygodnia w roku.
tydzien oczywiście może przyjmować wartości od 01 do 53 plus jakieś śmieci wynikające z formuł w pliku, u mnie np. #LICZBA!.
Chciałbym oczywiście, żeby wyświetlały się w tabeli wszystkie dostepne tygodnie dla roku (obecnie 2012).
Próbuję zrobić coś takiego:
| Kod: | With ActiveSheet.PivotTables("Tabela przestawna2").PivotFields("Rok")
For r = 1 To .PivotItems.Count
.PivotItems(r).Visible = True
Next r
For r = 1 To .PivotItems.Count
If .PivotItems(r).Name <> tydzien Then .PivotItems(r).Visible = False
Next r
For r = 1 To .PivotItems.Count
If .PivotItems(r).Name <> rok Then .PivotItems(r).Visible = False
Next r
End With |
Ale czegoś mi tu jeszcze brakuje...
Pozdrawiam,
[ Dodano: 2012-02-08, 13:28 ]
Zrobiłem póki co coś takiego:
| Kod: | On Error Resume Next
With ActiveSheet.PivotTables("Tabela przestawna2").PivotFields("Rok")
For r = 1 To .PivotItems.Count
.PivotItems(r).Visible = True
Next r
For r = 1 To .PivotItems.Count
If .PivotItems(r).Name <> rok Then .PivotItems(r).Visible = False
Next r
End With |
Czy słusznie? |
_________________ canto |
|
 | ID posta:
147843
|
|
|
 |
Wormsek
Excel Expert


Zaproszone osoby: 1
Pomógł: 586 razy Posty: 2657
|
|
 | ID posta:
147968
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
|
|