Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: worksheet_change hulp gevraagd  (gelezen 17896 keer)

0 leden en 1 gast bekijken dit topic.

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
worksheet_change hulp gevraagd
« Gepost op: 02 september 2019, 03:17:03 »
Beste helpers en oplossers,

Onderstaand stukje code staat achter mijn werkblad "Weekoverzicht" en doet wat het doen moet, op zich al een aardige prestatie van mijzelf. Wanneer ik in cel "E2" het weeknummer verander worden de gegevens van die week in dit blad geladen vanuit het blad "RIT_Invoer", in het voorbeeld bestand is week 34 en 35 ingevuld (uiteraard fictief).

Nu heb ik het gevoel, doordat het vullen nogal optisch te volgen is, dat dit eigenlijk wel wat sneller zou moeten kunnen.

Wie kan mij op weg helpen met tips en eventuele voorbeelden hoe ik dat het beste kan aanpakken?

Private Sub worksheet_change(ByVal Target As range)

    If Target.Address(0, 0) = "E2" Then
        range("G5:M21") = ""
       
        With worksheets(3)
            x = Array(.[c2], .[c2] + 1, .[c2] + 2, .[c2] + 3, .[c2] + 4, .[c2] + 5, .[d2])
            k = 0
                For i = 7 To 13
                    .cells(4, i) = x(k)
       
                    With worksheets(2).range("M5:M5000")
                        Set c0 = .Find(cells(4, i), LookIn:=xlValues)
                        If Not c0 Is Nothing Then
                            firstaddress = c0.Address
                            y = Array(8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
                                For j = 0 To 16
                                Do
                                    l = j + 5
                                    cells(l, i) = cells(l, i) + c0.Offset(0, y(j))
                                Set c0 = .FindNext(c0)
                                    If c0 Is Nothing Then
                                        GoTo Genoeg
                                    End If
                                Loop While c0.Address <> firstaddress
                                    If cells(l, i) = 0 Then
                                        cells(l, i) = ""
                                    End If
                                Next j
                        End If
                    End With
                k = k + 1
                Next i
        End With
    End If
    If k = 7 Then
        Call Invullen
    End If
Genoeg:

End Sub
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Haije

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 208
  • Geslacht: Man
  • Oplossing.be
Re: worksheet_change hulp gevraagd
« Reactie #1 Gepost op: 02 september 2019, 11:16:18 »
josc,

voldoet dit?

Zo ja, kijk dan naar de twee teogeveogde regeltjes in de code van het derde blad
|-|aije

ik gebruik Office 2016 Professional Plus

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: worksheet_change hulp gevraagd
« Reactie #2 Gepost op: 02 september 2019, 14:28:25 »
Haije,

Dank voor je antwoord

Ja, dat voldoet aan dat het optisch niet meer te volgen is. Dat ik dat zelf niet even bedacht had.

De snelheid is nog wel een dingetje, maar dat is ook meer gevoelsmatig een dingetje.

Weet iemand ook het verschil tussen:
If Not Intersect(Target, Me.range("E2")) Is Nothing Thenof
If Target.Address(0, 0) = "E2" Then
Beide codes werken, maar welke is de beste?
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: worksheet_change hulp gevraagd
« Reactie #3 Gepost op: 02 september 2019, 14:56:13 »
Ik ben inmiddels een beetje wakker geworden en heb aan de door Haije toegevoegde regels vervangen door:

        With Application
            .Calculation = xlCalculationManual
            .ScreenUpdating = False
            .EnableEvents = False
        End With

<-- code -->

        With Application
            .ScreenUpdating = True
            .Calculation = xlCalculationAutomatic
            .EnableEvents = True
        End With


Dat geeft in beeld een zekere rust, maar duurt nog wel altijd 1,5 tot 2 seconden voordat de gegevens op scherm staan.
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Haije

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 208
  • Geslacht: Man
  • Oplossing.be
Re: worksheet_change hulp gevraagd
« Reactie #4 Gepost op: 02 september 2019, 16:41:27 »
josc,

kijk eens in deze bijlage, daarin heb ik een draaitabel toegevoegd.
Als je in Q1 het weeknummer kiest heb je direct het overzicht van de betreffende week
|-|aije

ik gebruik Office 2016 Professional Plus

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: worksheet_change hulp gevraagd
« Reactie #5 Gepost op: 02 september 2019, 17:06:13 »
Dank voor deze suggestie Haije,

Ik zal mijzelf even moeten inleven in een draaitabel en zijn mogelijkheden, ik zie in elk geval de enorme snelheid waarmee de gegevens op het scherm verschijnen.

Zo eerst maar weer even werken en zal er vannacht even mee gaan spelen

Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

 


www.combell.com