Avatar billede gladhund Nybegynder
04. oktober 2010 - 11:27 Der er 6 kommentarer og
1 løsning

Screenupdating - over flere workbooks - "fejler"

Kære eksperter,

Jeg har en master workbook, som henter og gemmer data fra/i en anden workbook via nogle userforms. Det fungerer fint, men det ser bare meeega uprof ud, når skærmen flimrer løs og man kan se mine ark med variable og når der copy/pastes osv.

Jeg har forsøgt at bruge Application.Screenupdating = False (og true), men det virker bare ikke - nok fordi der er flere sheets og workbooks og kodestumper der interagerer.

Kan nogen give mig et forslag til hvordan jeg får det til at se lidt mere professionelt og "roligt" ud? Det optimale ville fx være en lille "Vent venligst" box, der vises i de 3-4 sekunder der arbejdes. Ellers vil det også være great hvis blot skærmen ikke flimrede rundt!
Avatar billede tjacob Juniormester
04. oktober 2010 - 13:51 #1
Du kan prøve at læse arkene ReadOnly:
Når jeg ikke kender din kode er det svært at give konkrete råd, men her er hovedsagen:

Du skal oprette et Workbook objekt, og sætte det lig kildearket, men som readonly:

dim oWBKilde as Workbook
Set oWBKilde = Workbooks.Open(FileName:=StiTilKildeark, ReadOnly:=True)

og så indsætte dine værdier, f.eks.:
ThisWorkbook.Sheets("Ark1").Range("B2").Value = oWBKilde.Sheets("Ark1").Range("B2").Value
-altså ingen copy/paste, men indsætte værdi direkte

Til sidst skal du lukke og frigive objektet:

oWBKilde.Close (False)
Set oWBKilde = Nothing

Det hele omkranses af Application.ScreenUpdating og Application.DisplayAlerts
Avatar billede gladhund Nybegynder
04. oktober 2010 - 14:16 #2
Tak for svaret.

Jeg forstår det som at jeg skal bruge en "mellemmand" i form af en workbook? Hvad vil det gøre af forskel?
Avatar billede tjacob Juniormester
04. oktober 2010 - 14:35 #3
Jeg er heller ikke sikker på at det gør nogen forskel, men det er den metode der er foreslået i diverse Excel-forums.

Men prøv i alle tilfælde at åbne readonly, og se om det gør nogen forskel, og hvis det ikke er tilfældet kan du jo prøve med Workbook objektet.
Avatar billede gladhund Nybegynder
05. oktober 2010 - 20:27 #4
Et lille problem er, at jeg på et tidspunkt også skal skrive i filen.

1. Først læses der fra den under userform_activate.
2. Så foretages der ændringer, som skrives tilbage i filen.
3. Så genindlæses den igen, så userformen har de nyeste data

Så read-only går ikke :(
Avatar billede gladhund Nybegynder
06. oktober 2010 - 11:00 #5
Nu har jeg forsøgt mig med del 1, men det blinker desværre ligesom før. Og nu får jeg også fejl på noget af min egen kode, der virkede før:

'MARKER INDSATSFELTER

Dim j As Integer
Dim id As String

id = frmtrs!cbid.Text

For j = 0 To frmtrs!lbindsatsfelter.ListCount - 1

If Worksheets("Variable").Range("K2").Offset(j, 0) = id Then 'HER MARKERES GULT

frmtrs!lbindsatsfelter.Selected(j) = True

Else

frmtrs!lbindsatsfelter.Selected(j) = False

End If

Next j
Avatar billede gladhund Nybegynder
06. oktober 2010 - 11:22 #6
Er der nogle andre måder at undgå alt det skærmflimmer på? Og tak for forslaget tjacob...
Avatar billede gladhund Nybegynder
17. oktober 2010 - 22:31 #7
så lukkes der bare ned
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester