Keresés

Részletes keresés

Delila10 Creative Commons License 2013.04.08 0 0 20976

Kedves Jimmy!

 

2011. okt-ben írtál valakinek egy makrót a 16368-as hsz-ben, ami a fájl bezárásakor levelet küldött.

Ki tudnád bővíteni azzal, hogy csatolja az aktuális füzetet? Nekem nem megy.

 

Törölt nick Creative Commons License 2013.04.07 0 0 20975

Hát igen, ha egyből elmondod, hogy mire kell, nem kellett volna fölösleges köröket futnod...

Ha jól értem, az a cél, hogy van egy XY cella, és ha ebben megváltozik a beírt érték, akkor egy valamilyen függvény értékét írja be helyette.

Ez esetben érdemes a worksheet_change eljárást így megírni:

 

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
        'update XY
    Application.EnableEvents = True
End Sub

Mert különben a Worksheet_Change önmagát fogja végtelen ciklusban meghívogatni.

Előzmény: Zoxo Whitney (20974)
Zoxo Whitney Creative Commons License 2013.04.07 0 0 20974

Még egyszer köszönöm a segítséget, de mégis worksheet_change eljárás lesz belőle...

:-))

 

Ugyanis nem szereti a "körkörös hivatkozást" , ha az adott cella értékét is felhasználja az eredmény megállapításánál..

(Az adott cell értékét akartam updatelni. :-( )

Előzmény: Törölt nick (20972)
Zoxo Whitney Creative Commons License 2013.04.06 0 0 20973

Köszönöm!

Kiegészítettem a rutint egy harmadik paraméterrel is

Function atszamol2(p_row As Integer, p_column As Integer, p_range As Range) As String,

a hívásnál a képernyőn is (biztos, ami biztos) beírtam a lap nevét is

=atszamol2(SOR()-14;OSZLOP()-12;Kézi!$A$1:$I$9) és működik volatile nélkül is!

 

Viszont az továbbra is igaz, hogy a kódnak a module1-ben kell lennie.

Amikor áttettem  a kódot a "Kézi" lap kódjai közé, egyből hibát jelzett..

Előzmény: Törölt nick (20972)
Törölt nick Creative Commons License 2013.04.06 0 0 20972

Nem egészen.

Az udf azért (akkor) frissül, mert (ha) bármelyik bemenő paramétere megváltozik. Tehát akkor is frissül, ha a p3 változik meg.

A worksheet_change ettől független, alternatív lehetőség a p3 változásának követésére (ha p3 egy cellát vagy tartományt jelöl).

 

Előzmény: Törölt nick (20971)
Törölt nick Creative Commons License 2013.04.05 0 0 20971

Köszönjük.

Na most ezt jól értem? A p3 és a worksheet_change hatására frissül az udf?

 

Előzmény: Törölt nick (20970)
Törölt nick Creative Commons License 2013.04.05 0 0 20970

Nekem az a véleményem, hogy ezt a Volatile dolgot messzire el kell kerülni mindaddig, amíg a cél más úton elérhető.

1) Munkalapon a cellatartalom változását a Worksheet_Change eseménykezelővel lehet követni.

2) Saját függvénynek úgy is megadhatod bemenő paraméterként a figyelendő cellát, hogy a függvény tulajdonképpen nem is kezd vele semmit.

Pl. az alábbi függvény akkor is újraszámolódik, ha a p3-nak megadott cella tartalma megváltozik, jóllehet a függvény értékéhez a p3 nem járul hozzá.

Function Saját_függvény(p1 As Integer, p2 As Integer, p3 As Integer)

    Saját_függvény = p1 + p2

End Function

 

 

Előzmény: Zoxo Whitney (20967)
Törölt nick Creative Commons License 2013.04.05 0 0 20969
Előzmény: Zoxo Whitney (20967)
Törölt nick Creative Commons License 2013.04.05 0 0 20968

Application.Volatile (True)

Application.Volatile (False)

 

Ha nem adod meg, a true az alapértelmezett.

 

Szerintem fentieket innentől kezdve már feltételhez lehet rendelni, hogy melyik munkalapon akarod használni.

 

 

Előzmény: Zoxo Whitney (20966)
Zoxo Whitney Creative Commons License 2013.04.05 0 0 20967

Megoldható-e, hogy csak egy adott munkalapon érzékelje a változást, és nem az egész munkafüzetben?

Előzmény: Zoxo Whitney (20966)
Zoxo Whitney Creative Commons License 2013.04.05 0 0 20966

"Application.Volatile"

Ez mit jelent?

Hogyan lehet kikapcsolni?

Amikor "kézből" dolgozom, akkor mintha kéne, hogy müködjön a saját gyártású függvényem, de amikor programot futtatok, akkor tényleg piszokul lelassítja a futást.

Ugyanaz a program, ugyanazzal az adattal 2-3 mp helyett 4-5 perc!

Előzmény: Törölt nick (20944)
Delila10 Creative Commons License 2013.04.05 0 0 20965

Nálam is sokáig keringett, mikor egy régi, szeméttel teli kimutatáson futtattam. Később, kevesebb ócskasággal telítettnél hamar végzett.

Előzmény: wawabagus (20961)
wawabagus Creative Commons License 2013.04.05 0 0 20964

Köszi szépen kipróbálom :-)!

 

Előzmény: Törölt nick (20963)
Törölt nick Creative Commons License 2013.04.05 0 0 20963

Esetleg próbáld ki ezt. Tüneti kezelés ugyan, de szerintem jó lesz.

 

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Dim pf As PivotField
    For Each pf In Target.RowFields
        pf.DataRange.NumberFormat = "mmm-yy"
    Next
End Sub

Előzmény: wawabagus (20958)
wawabagus Creative Commons License 2013.04.05 0 0 20962

Ááá, az nem újdonság...mindig az vagyok.

Az az újdonság, ha nem vagyok épp az :-D

Előzmény: Delila10 (20960)
wawabagus Creative Commons License 2013.04.05 0 0 20961

Szia!

Azt, hogy nem jön ki a körforgásból!

Nem áll le a macro a végén, hanem végtelenített loopban van.

 

Előzmény: Delila10 (20959)
Delila10 Creative Commons License 2013.04.05 0 0 20960

Nem vagyok ma kretív.

Ma kretén vagy. Bocsi, ezt nem lehetett kihagyni. :-)

Előzmény: wawabagus (20958)
Delila10 Creative Commons License 2013.04.05 0 0 20959

Mit is jelent itt, hogy "bekattan"?

Előzmény: wawabagus (20957)
wawabagus Creative Commons License 2013.04.05 0 0 20958

Szia :-)!

Igazad van, szóval itt most aktuálisan "sorfejléc".

Már lövésem sincs mivel próbálkozzak, szerintem kiolvasatom vele a pivotból sima cellákba "aztjónapot", mert kezd az idegeimre menni...

 

Nem bírja elfelejteni ezt az idióta dd-mm-yyyy formátumot, ha fejen állok neki ez akkor is így marad.

A textként formáizott is rossz, az idióta ABC sorrend miatt...

 

Nem vagyok ma kretív :-(...



Előzmény: Törölt nick (20956)
wawabagus Creative Commons License 2013.04.05 0 0 20957

Szia Delila10,

Képzeld valamiért bekattan nekem ez a macro :-(...

Azt hiszem feladom...

 

ÁÁáááá

Előzmény: Delila10 (20954)
Törölt nick Creative Commons License 2013.04.05 0 0 20956

Ez a bizonyos dátummező sorfejléc, vagy oszlopfejléc, vagy netán adatmező?

Előzmény: wawabagus (20955)
wawabagus Creative Commons License 2013.04.05 0 0 20955

A másik kérdésem, hogy csinálnák egy pivot chartot ami dátumokat mutat.

A pivot label ilyen fomában mutat "01/02/2012".

Én így szeretném: "mmm-yy"

 

A pivoton belül, ha rálépek az opiciókta nem jelenik meg a "Number" ahol beállíthatnám, csak mint cella formátum tudom átírni. OK, átírom.

De az a nyomorék chart a régi verzóban mutatja...hiába "mmm-yy" már a pivotban, a grafikonon régi label van.

 

Ok. megpróbálom a charton beállítani a dolgot és hiába állítom át, nem úgy mutatja...ugye levileg ott is lehet axis label formátumot mutatni.

 

Komolyan kiborulok...

:-(

 

Ha kifüggvényezem hogy csak textkénet irja a nyers adatba így : text(a1,"mmm-yy")...akkor minden kalssz, viszont  PIVOTBAN is nyílván textként rakra ABC sorrendben...

 

Lovésem sincs mit csináljak...

Valami ötlet? 

Delila10 Creative Commons License 2013.04.05 0 0 20954

Valahonnan valamikor kimásoltam ezt a makrót, működik.

 

Sub DeleteOldItemsWB()
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim pi As PivotItem
    
    On Error Resume Next
    For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshTable
            pt.ManualUpdate = True
            For Each pf In pt.VisibleFields
                If pf.Name <> "Data" Then
                    For Each pi In pf.PivotItems
                        If pi.RecordCount = 0 And Not pi.IsCalculated Then pi.Delete
                    Next pi
                End If
            Next pf
            pt.ManualUpdate = False
            pt.RefreshTable
        Next pt
    Next ws
End Sub

Előzmény: wawabagus (20952)
seven update sorbi Creative Commons License 2013.04.05 0 0 20953

Egyáltalán nem. Rácsodálkozásom szívből jövő és őszinte volt.

 

(Ezt a saját_függvény dolgot egyébként sem ismertem, nagyon jól fög ez még jönni nekem is.)

Előzmény: Retro Image (20950)
wawabagus Creative Commons License 2013.04.05 0 0 20952

Sziasztok!

Tudtok megoldás erre a gondra?

 

Kiszedni a pivot filteréből azt a labelt, ami már nem létezik a nyers adatokban?

Persze tudom, újra lehetne csinálni a pivotot, de az elég nagy macera lenne.

 

Létezik erre valami frappáns megoldás?

Előre is köszi!!

J.

Zoxo Whitney Creative Commons License 2013.04.05 0 0 20951

Erre nem is, de  ez csak egy "móricka függvény" volt, az "igazit" majd írom...

Előzmény: Retro Image (20950)
Retro Image Creative Commons License 2013.04.05 0 0 20950

Azt akarod mondani, hogy erre nem kellett volna makrófüggvényt írni?

Előzmény: seven update sorbi (20949)
seven update sorbi Creative Commons License 2013.04.05 0 0 20949

Nahát, hogy itt milyen kreatív emberek vannak...:)

Előzmény: Zoxo Whitney (20948)
Zoxo Whitney Creative Commons License 2013.04.04 0 0 20948

Áttettem a kódot a "module1"-be, kicsit változtattam a kódon

 

Function sajat_fuggveny(p_ertek As Integer) As String
If 2 * Int(p_ertek / 2) = p_ertek Then
    sajat_fuggveny = "páros"
Else
    sajat_fuggveny = "páratlan"
End If
End Function

Müködik!!!!!!!

Fasza!!!!!!!

Csereberélem A1 értékét, és automatikusan jön a megfelelő válasz!

Előzmény: Zoxo Whitney (20947)
Zoxo Whitney Creative Commons License 2013.04.04 0 0 20947

Beírtam egy cellába:

=sajat_fuggveny(A1)

és megírtam a függvényt az adott munkalapon:

 

Function sajat_fuggveny(p_ertek As Range) As String
If 2 * Int(Range(p_ertek).Value / 2) = Range(p_ertek).Value Then
    sajat_fuggveny = "páros"
Else
    sajat_fuggveny = "páratlan"
End If
End Function

, de még csak fel sem ismeri a nevét, #NÉV? üzenet gyün.

Előzmény: Zoxo Whitney (20946)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!