• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Screenupdate met beveiliging

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
9.219
Besturingssysteem
Win11
Office versie
Office 365
Laat ik ook eens een vraag stellen

Ik heb macro die nog al wat berekeningen doet.
Om al die berekeningen niet te zien gebruik ik 'Application.ScreenUpdating = False' en 'Application.ScreenUpdating = True'
Ik wil het blad echter ook beveiligen maar dan werkt de screen update niet meer?

Hoe moet ik mijn VBA aanpassen?
Vul in A1 een getal (variërend van 3 tm 10) in om de grootte van de tabel te bepalen
In de bijlage komt alleen tekst te staan je ziet het wel iets maar in werkelijkheid is het een berekening en zie je het veel duidelijker.
 

Bijlagen

Laatst bewerkt:
popipipo,

Zomaar een idee.
Als je de beveiliging er even van af haald (met VBA), zou het dan lukken?

Code:
Sub Macro2()
Sheet1.Unprotect "AbC"
Application.ScreenUpdating = False
  Code.........
Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Hallo Wim

Duty calls
Vandaar deze late reactie.
VBA is niet mijn sterkste kant blijkt hier weer uit.
Eerst beveiliging eraf en daarna 'screenupdate false' werkt goed.
Had ik eerst ook zo, maar in de macro om de beveiliging er af te halen stond dit ook dus op het moment van uitvoeren van de macro stond er weer 'screenupdate true'

Bedankt voor de oplossing.
 
Dat lijkt me overbodig.
Er lijkt zelfs enig systeem te ziteen in de opbouw van de gegevens.
Lees dei gegevens eerst in een matris en schrijf die in 1 keer naar het werkblad. Onzichtbaar voor de gebruiker.

Code:
With Sheets("sheet1").Range("e6").Resize([sheet1!A1], [sheet1!A1])
   sq = .Value
   For j = 1 To UBound(sq)
     For jj = 1 To UBound(sq, 2)
       sq(j, jj) = Replace(Replace(Chr(64 + j) & "#" & Chr(64 + j) & "*#*", "#", [A1]), "*", Chr(99 + jj))
     Next
   Next
   .value=sq
End With
De macro wordt zelfs 'iets' korter....
 
@snb
Je Hebt het weer prima gedaan met je VBA
Ik doe je het, zoals je waarschijnlijk wel weet, absoluut niet na.
Ik ben er niet erg goed in en was al blij dat ik het voor elkaar kreeg.
In mijn achterhoofd dacht ik het zal best wel korter kunnen.
Er zit echter een maar aan.

In de bijlage komt alleen tekst te staan je ziet het wel iets maar in werkelijkheid is het een berekening
Range("E6") = "A3AD3D"
is eigenlijk:
Range("E6") = "=A3A+D3D"
Waarbij A3A en D3D benamingen van cellen zijn.
Echter excel accepteert C3C en R3R niet en worden daarom CE3C en RE3R genoemd

En in Cel A1 moet nog een getal ingegeven worden
Hieruit haalt VBA hoe groot de matrix moet zijn en ook de verdere opmaak van lijnen.
Jou mooie voorbeeld geeft alleen een matrix van 10 bij 10

Bijgaand het uitgeklede bestand.

Ben zeer benieuwd hoe kort je hem nu kunt krijgen.
 

Bijlagen

Mijn voorbeeld geeft een 3 x 3 matrix als in A1 3 staat, een 4 x 4 matrix als in A1 4 staat, etc...

Ik vrees dat blad 2 overbodig is.
Je kunt de berekeningen ook in VBA uitvoeren (eenvoudiger en sneller)
Jouw berekening kan ik niet zo snel reconstrueren. Hieronder een gok.

Code:
Sub willekeur()
  Randomize
  With Sheets("sheet1").Range("e6").Resize([sheet1!A1], [sheet1!A1])
     sq = .Value
     For j = 1 To UBound(sq)
       For jj = 1 To UBound(sq, 2)
         sq(j, jj) = int(47*Rnd)
       Next
     Next
    .value=sq
   End With
End Sub
 
Laatst bewerkt:
Thanks Snb
Ik dot het je niet na
 
Hoeft ook niet.
Zo is bijv. voor mij de draaitabel nog grotendeels onbekend terrein.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan