abonnement Unibet Coolblue
pi_139691360
Ik heb enige tijd geleden de volgende procedure geschreven zodat gebruikers met hun poten vingers afblivjen van mijn pivot tables. :P

Na het runnen van deze procedure kan je nagenoeg niets meer met alle pivots in je workbook. :P

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub doRestrictPivots()
    Dim WS As Worksheet
    Dim PT As PivotTable
    Dim PF As PivotField
    Dim isAllowed As Boolean
    
    isAllowed = False
    On Error Resume Next
    For Each WS In ActiveWorkbook.Worksheets
        For Each PT In WS.PivotTables
            PT.EnableFieldDialog = isAllowed
            PT.EnableFieldList = isAllowed
            PT.EnableDataValueEditing = isAllowed
            For Each PF In PT.PivotFields
                PF.EnableItemSelection = isAllowed
                PF.DragToColumn = isAllowed
                PF.DragToData = isAllowed
                PF.DragToHide = isAllowed
                PF.DragToPage = isAllowed
                PF.DragToRow = isAllowed
            Next PF
        Next PT
    Next WS
End Sub
  donderdag 8 mei 2014 @ 11:34:34 #177
170545 DaviniaHR
Mrs. PhysicsRules
pi_139692335
Wow!
En dit werkt ook in de Nederlandse versie van Excel?
Waar kan ik ook alweer vinden om een macro te openen?
*O* Trotse mama van E l i en A v i v a *O*
Insanity is heritable. You get it from your children.
Ik ben wel gek, maar niet achterlijk.
If you can't beat them, confuse them.
pi_139692373
Ja. ALT+F11. :)
  donderdag 8 mei 2014 @ 11:41:56 #179
170545 DaviniaHR
Mrs. PhysicsRules
pi_139692590
Als ik dit rechtstreeks in de macro-ding plak, wordt het rood en gebeurt er niets.
Als ik dan op F5 druk, krijg ik een pop-up dat ik een sub moet aanmaken.
Wat doe ik verkeerd?
*O* Trotse mama van E l i en A v i v a *O*
Insanity is heritable. You get it from your children.
Ik ben wel gek, maar niet achterlijk.
If you can't beat them, confuse them.
pi_139694101
quote:
0s.gif Op donderdag 8 mei 2014 11:41 schreef DaviniaHR het volgende:
Als ik dit rechtstreeks in de macro-ding plak, wordt het rood en gebeurt er niets.
Als ik dan op F5 druk, krijg ik een pop-up dat ik een sub moet aanmaken.
Wat doe ik verkeerd?


Zo werkt het bij mij wel..
  donderdag 8 mei 2014 @ 13:33:44 #181
170545 DaviniaHR
Mrs. PhysicsRules
pi_139696687
Als ik het in kopieer krijg ik nu de foutmelding "Complieerfout: verwacht: insructie-einde
En ik krijg het als 1 regel, niet met die tabs erbij. Is dat erg?

EDIT: Dan springt de cursos ook naar de eerste "dim" (van Dim WS As Worksheet)

[ Bericht 21% gewijzigd door DaviniaHR op 08-05-2014 13:54:40 ]
*O* Trotse mama van E l i en A v i v a *O*
Insanity is heritable. You get it from your children.
Ik ben wel gek, maar niet achterlijk.
If you can't beat them, confuse them.
pi_139697655
Als 1 regel? Hoe kopieer je die code dan? :?

http://www.mijnbestand.nl/Bestand-OBWTR84NMQRG.xlsm
  donderdag 8 mei 2014 @ 14:51:19 #183
170545 DaviniaHR
Mrs. PhysicsRules
pi_139699547
Ah, ik heb de code nu goed ingekopieerd.
Maar nu kan ik ook de waardes van de rapportfilters niet meer instellen?
Of de waardes sorteren?
*O* Trotse mama van E l i en A v i v a *O*
Insanity is heritable. You get it from your children.
Ik ben wel gek, maar niet achterlijk.
If you can't beat them, confuse them.
pi_139700196
Ik zei toch dat je nagenoeg niets meer kan doen? :P
pi_139732819
Ik heb een vraag wat misschien heel simpel op te lossen is, maar ik weet het niet.
Ik heb een Excel 2007 document met verder alleen maar tekst, wat 1,5 mb groot is.
Vergelijkbare documenten zijn normaal maar iets van 30 of 40 kb.

Volgens mij zit er een verborgen bestandje in ofzo wat voor die 1,5 mb zorgt, hoe kan ik dit zien ?
pi_139732875
Veel spaties op tabs aan het einde van de regel?
Aldus.
pi_139733296
Hoe kan ik dat zien :@
pi_139733312
Is het niet heel stiekem een gedeeld werkboek of iets dergelijks? Laatst op het werk begon iemand ook al te zeuren een bestand dat steeds maar groter werd.

Bleek het een gedeeld werkboek te zijn waarbij de wijzigingen worden bewaard... :')
pi_139733864
Mogelijk zijn er ook tabbladen verborgen waar veel data in staat.
Afbeeldingen doen het ook altijd goed.
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
pi_139733883
Als het een *.xlsx is, dan kun je *.xlsx veranderen in *.zip en dan unzippen(vergeet niet een copy te maken van je originele bestand!).
Dan kun je misschien nog info vinden over wat de oorzaak is van de grootte van het bestand.
  vrijdag 9 mei 2014 @ 12:51:14 #191
170545 DaviniaHR
Mrs. PhysicsRules
pi_139736779
quote:
2s.gif Op donderdag 8 mei 2014 15:10 schreef sylvesterrr het volgende:
Ik zei toch dat je nagenoeg niets meer kan doen? :P
Is er een regeltje in de sub die ik kan ewghalen waardoor je wel de rapportfilters kunt instellen?
Niet nieuwe filters inslepen, maar wel op het knopje drukken, zeg maar?
*O* Trotse mama van E l i en A v i v a *O*
Insanity is heritable. You get it from your children.
Ik ben wel gek, maar niet achterlijk.
If you can't beat them, confuse them.
pi_139738143
quote:
0s.gif Op vrijdag 9 mei 2014 12:51 schreef DaviniaHR het volgende:

[..]

Is er een regeltje in de sub die ik kan ewghalen waardoor je wel de rapportfilters kunt instellen?
Niet nieuwe filters inslepen, maar wel op het knopje drukken, zeg maar?
Dat durf ik zo 1,2,3 niet te zeggen. Mijn gebruikers mogen de standaardfilters niet gebruiken vanwege de vele pivot tables die ik filter met behulp van slicers. :P
  vrijdag 9 mei 2014 @ 13:43:23 #193
170545 DaviniaHR
Mrs. PhysicsRules
pi_139738503
Oke, helder.
Bedankt voor je hulp iig :)
*O* Trotse mama van E l i en A v i v a *O*
Insanity is heritable. You get it from your children.
Ik ben wel gek, maar niet achterlijk.
If you can't beat them, confuse them.
pi_139752089
quote:
0s.gif Op vrijdag 9 mei 2014 12:51 schreef DaviniaHR het volgende:

[..]

Is er een regeltje in de sub die ik kan ewghalen waardoor je wel de rapportfilters kunt instellen?
Niet nieuwe filters inslepen, maar wel op het knopje drukken, zeg maar?
regel 15
PF.EnableItemSelection = isAllowed
Die weghalen
  zaterdag 10 mei 2014 @ 14:31:03 #195
249182 Holy_Goat
mhèèhèhè
pi_139776426
Lieve mensen.

Waarom de fuck gebeurt dit? }:|


Ik verwacht gewoon 0.03 als antwoord.

Wel via een omweg opgelost nu, maar slaat echt nergens op
1
2
3
4
5
6
7
Function getdecimals2(ByVal value As Double) As Double
        Dim a As Double
        Dim b As String
        a = Round(value * 100, 0)
        b = CStr(Right(a, 2))
        getdecimals2 = CDbl(b) / 100
End Function

Zit er zo een onnauwkeurigeheid in?
pi_139782579
quote:
0s.gif Op zaterdag 10 mei 2014 14:31 schreef Holy_Goat het volgende:
Lieve mensen.

Waarom de fuck gebeurt dit? }:|
[ afbeelding ]

Ik verwacht gewoon 0.03 als antwoord.

Wel via een omweg opgelost nu, maar slaat echt nergens op
[ code verwijderd ]

Zit er zo een onnauwkeurigeheid in?
Het is maar wat je als zo'n grote onnauwkeurigheid beschouwd (0,00000000000116415210804632
). Het simpele antwoord is gewoon, ja Excel voldoet hierbij aan de internationaal geaccepteerde standaard voor het gebruik van floating point.

Het opslaan van decimalen in een binair getal is zeer ingewikkeld. Ze hebben hiervoor een systematiek bedacht om het toch in 64 bit (of 8 bytes) op te slaan. Wat ze hiervoor doen is je decimale getal omzetten naar de dichtstbijzijnde floating point dat op 15 decimalen nauwkeurig werkt. Door de output af te ronden in je scherm, heb je dit normaal niet door.

Het echte antwoord is eigenlijk dus ja, er zit onnauwkeurigheid in. Zodra je een breuk hebt (je input in dit geval), dan is dit per definitie al een floating point en dus onnauwkeurig. Het zal bijna nooit mis gaan, net zoals je je output in je eerste macro op 2 decimalen had kunnen afronden.

returnsdecimals = Round(value - Round(value), 2)

[ Bericht 5% gewijzigd door snabbi op 10-05-2014 18:09:03 ]
pi_139784534
je vergeet dat er ook naar boven kan worden afgerond.
  zaterdag 10 mei 2014 @ 22:17:24 #198
249182 Holy_Goat
mhèèhèhè
pi_139795820
quote:
0s.gif Op zaterdag 10 mei 2014 18:03 schreef snabbi het volgende:
returnsdecimals = Round(value - Round(value), 2)
Mooie oplossing maar gaat inderdaad niet altijd op.
?Round(213.82 - Round(213.82), 2)
-0,18

1
2
3
4
5
6
Sub aa()
 Dim a As Double
 a = Round(213.82 - Round(213.82), 2)
 If a < 0 Then a = a + 1
 Debug.Print a  >> geeft 0.82
End Sub

dit werkt wel weer.

Maarem, waarom gaat het dan fout in mijn eerdere voorbeeld?
pi_139819700
quote:
0s.gif Op zaterdag 10 mei 2014 19:10 schreef Speculant. het volgende:
je vergeet dat er ook naar boven kan worden afgerond.
returnsdecimals = Round(value - Application.WorksheetFunction.Floor(value, 1), 2)

quote:
0s.gif Op zaterdag 10 mei 2014 22:17 schreef Holy_Goat het volgende:
Maarem, waarom gaat het dan fout in mijn eerdere voorbeeld?
Voor ons is het net alsof je 3100,03 - 3100 doet. Dit is 0,03
Voor de computer is het echter 3100,02999999988358 - 3100
Dit komt doordat de computer dus de dichtsbijzijnde floating point weergave zoekt die 3100,03 benaderd. 3100 hoeft hij niet te benaderen, want alleen decimalen en getallen groter dan 15 cijfers moeten worden benaderd.

Nu weet de computer wel dat hij 3100,02999999988358 moet weergeven als 3100,03, maar dat is niet zo voor 0,02999999988358. 0,03 heeft namelijk een andere floating point representatie, deze is bijvoorbeeld 0,030000001344.
PS ik ben te lui geweest om de echte getallen er bij te zoeken

Door het rekenen met de andere getallen die niet als floating point hoeven weergegeven te worden, verliest de computer de type weergave uit het oog.

[ Bericht 2% gewijzigd door snabbi op 11-05-2014 10:21:36 ]
  zondag 11 mei 2014 @ 10:55:40 #200
249182 Holy_Goat
mhèèhèhè
pi_139820250
quote:
0s.gif Op zondag 11 mei 2014 10:16 schreef snabbi het volgende:

[..]

returnsdecimals = Round(value - Application.WorksheetFunction.Floor(value, 1), 2)

[..]

Voor ons is het net alsof je 3100,03 - 3100 doet. Dit is 0,03
Voor de computer is het echter 3100,02999999988358 - 3100
Dit komt doordat de computer dus de dichtsbijzijnde floating point weergave zoekt die 3100,03 benaderd. 3100 hoeft hij niet te benaderen, want alleen decimalen en getallen groter dan 15 cijfers moeten worden benaderd.

Nu weet de computer wel dat hij 3100,02999999988358 moet weergeven als 3100,03, maar dat is niet zo voor 0,02999999988358. 0,03 heeft namelijk een andere floating point representatie, deze is bijvoorbeeld 0,030000001344.
PS ik ben te lui geweest om de echte getallen er bij te zoeken

Door het rekenen met de andere getallen die niet als floating point hoeven weergegeven te worden, verliest de computer de type weergave uit het oog.
Dankjewel voor je uitleg :)
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')