Toon posts:

Excel file traag door macro

Pagina: 1
Acties:

Vraag


Acties:
  • +1 Henk 'm!

Verwijderd

Topicstarter
Ik heb volgende macro samengesteld:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Sheets("A").Visible = xlSheetHidden
Sheets("B").Visible = xlSheetHidden
Sheets("C").Visible = xlSheetHidden
Sheets("D").Visible = xlSheetHidden

Application.ScreenUpdating = False

For i = 5 To 10000
If InStr(1, Cells(i, 3), "A") Then Sheets("A").Visible = xlSheetVisible
If InStr(1, Cells(i, 3), "B") Then Sheets("B").Visible = xlSheetVisible
If InStr(1, Cells(i, 3), "C") Then Sheets("C").Visible = xlSheetVisible
If InStr(1, Cells(i, 3), "D") Then Sheets("D").Visible = xlSheetVisible
Next i
Application.ScreenUpdating = True
End Sub

Maar dan veel langer natuurlijk
Maar nu als ik in andere cellen iets ingeef doet hij ook laden waardoor het allemaal heel traag gaat om dat document in te vullen.

Is er een manier om dit vlotter te laten gaan?

...

Alle reacties


Acties:
  • 0 Henk 'm!

  • EnerQi
  • Registratie: Maart 2011
  • Laatst online: 05-10 11:26
- auto calculate uitzetten? Geen idee of er veel formules inzitten

Acties:
  • 0 Henk 'm!

  • DirtyBird
  • Registratie: Juni 2005
  • Laatst online: 08:00

DirtyBird

Praktiserend denker

Misschien kun je de volatility uitzetten, al weet ik niet zeker of het dan uberhaupt nog werkt. Je kunt dit in de macro opnemen.

Alternatief kan het wellicht via een button ipv continu? Maar dat hangt uiteraard af van het doel van je tool.

Panasonic Lumix G9ii ~ Leica DG 12-60mm f/2.8-4.0 ~Lumix 35-100mm f/2.8 II ~ Lumix 20mm f/1.7 ~ M.Zuiko 60mm f/2.8 Macro ~ Leica DG 50-200mm f/2.8-4.0 ~Leica DG 200mm f/2.8


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
9995 x IF..., niet verwonderlijk dat dat traag verloopt.
Is de inhoud van de cellen telkens maar 1 letter ?
Indien niet, staat de gezochte letter telkens op dezelfde plaats in de cellen (bv. op plaats4) ?
Naar hoeveel letters wil je zoeken ?

[ Voor 55% gewijzigd door dix-neuf op 15-06-2020 14:08 ]


Acties:
  • +2 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je macro mist logica.

1: hij loopt nu bij elke wijziging in het werkblad. Door middel van een intersect kun je het beperken tot wijzigingen in kolom C.

2: Het heeft geen zin om 10000 cellen te controleren. Zodra ergens in de kolom een A wordt gevonden wordt werkblad A zichtbaar.

Oplossing:
* Controleer of de wijziging plaats heeft gevonden in kolom 3. Zoja, zet de zichtbaarheid van sheetA gelijk aan het voorkomen van "A" in die kolom.
Doe dat ook voor B,C,D. Etc.

Visual Basic:
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not (Intersect(Target, Range("C:C")) Is Nothing) Then
        Sheets("A").Visible = Not (Me.Range("C:C").Find("A") Is Nothing)
    End If
End Sub

[ Voor 24% gewijzigd door Lustucru op 15-06-2020 22:49 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland