• 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.

Onverwachte update van shapes

Status
Niet open voor verdere reacties.

SteveH

Gebruiker
Lid geworden
18 mei 2007
Berichten
10
Goedemiddag,

Ik heb een werkblad waarin een lijst met data staat en daarnaast heb ik doormiddel van een groot aantal shapes een soort grafiek gemaakt.

Nu heb ik daarna toegevoegd dat als je op een cel in de lijst klikt dat hij netjes een dikke rand maakt om de hele rij van de lijst (6 kolommen). als je vervolgens op een andere cel klikt krijgt de vorige selectie weer een normale "border" en wordt de nieuwe selectie met een dikke border uitgerust.

Nu is mijn probleem dat de commando's om de linestyle en weight van de border te zetten ervoor zorgen dat al mijn shapes opnieuw worden getekend.

Ik heb al geprobeerd om de screenupdating en calculation op false en manual te zetten en dat helpt in zoverre dat de shapes nog maar 1 maal worden geupdate ipv een keer of 4 (ik heb 4 aanroepen naar die border zitten)

Ik snap dat het redelijk diep gaat maar misschien heeft iemand toch een idee?

Bedankt alvast,

Steven
 
Helpt dit misschien?

Code:
Application.EnableEvents = False
'code
Application.EnableEvents = True
 
Bedankt voor de antwoorden maar de enableevents werkte niet en ook enableanimation loste het niet op.

Ik kan niet de hele code hier neer zetten maar ik heb de selectionchange trigger hier geattached. Dat is degene die de problemen veroorzaakt. Ik heb al wel op een ander werkblad gezien dat als de shapes uit beeld verdwijnen en dan weer terug komen dat ze ook opnieuw opgebouwd worden. Misschien wat meer informatie over de shapes. Het is een rechthoekig langwerpig vlak als achtergrond met daarop allemaal kleine streepachtige of rechthoekige shapes.

Steven
 

Bijlagen

Niet direct een volledige oplossing, maar misschien een richting om deze te vinden.

Dit is wat ik concludeer na het draaien van je code.
Zodra je de linestyle van de borders aanpast, houd excel standaard de interne celhoogte op dezelfde maat.
Om deze hetzelfde te houden wordt de rijhoogte aangepast.
Normale rijhoogte is 12,75 (17 pixels), nadat de border aangepast is wordt dit 14,25 (19 pixels).
Hierdoor moeten de shapes ook opnieuw getekend worden.

Ik heb even enkele shapes in het gebied gezet en merk ook dat hiervan de hoogte automatisch wordt aangepast als de regelhoogte wijzigt. (Standaard rechthoeken ingevoegd zonder daar iets aan de instellingen te wijzigen)
Oplossing ligt m.i. daarom in het meteen ook aanpassen van de rijhoogte bij het aanpassen van de rand.
Met onderstaande aanpassing (vet aangegeven) ben ik het knipperen kwijt, behalve bij de rijen waar de shapes in het gebied staan waarvan de randen vet gemaakt worden.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Rij As Integer
    Dim Col As Integer

    Col = Target.Column

    'Reset the previous selection
    If Col < 7 Then

        Application.EnableEvents = False
        Application.EnableAnimations = False
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        ActiveSheet.Unprotect
        If Len(LastRange) > 2 Then
            Rij = ActiveSheet.Range(LastRange).Row
            If Rij > 1 Then
                With ActiveSheet
                    .Range(.Cells(Rij, 1), Cells(Rij, 6)).Borders.Weight = xlMedium
                    .Range(.Cells(Rij, 1), Cells(Rij, 6)).Borders(xlEdgeTop).LineStyle = xlLineStyleNone
                    .Range(.Cells(Rij, 1), Cells(Rij, 6)).Borders(xlEdgeBottom).LineStyle = xlLineStyleNone
                End With
            End If
        End If

        Rij = Target.Row

        'We are going to give the row in the table a fat line around it
        With ActiveSheet
            .Range(.Cells(Rij, 1), Cells(Rij, 6)).Borders.Weight = xlThick
 [B]           .Rows(Rij).RowHeight = 12.75[/B]   'toegevoegde regel, 12.75 is de standaardhoogte van een rij.
        End With
        ActiveSheet.Protect
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
        Application.EnableEvents = True
        Application.EnableAnimations = True

        LastRange = Target.Address
    End If
End Sub

Gebruikte Excel-versie is 2003
 
Laatst bewerkt:
Jan,

Het blijft bij mij toch nog knipperen, misschien omdat er shapes op en over elkaar liggen o.i.d.

Bedankt voor de moeite en het extra inzicht. Misschien als ik meer dingen ga proberen, kan ik het er nog uit krijgen, maar het is in verhouding zo'n klein probleem dat ik er op dit moment niet meer tijd aan ga/kan besteden. Men leert er maar mee leven:cool:

Bedankt in ieder geval en hopelijk helpt het iemand anders die een keer met hetzelfde stoeit.

Steven
 
Dag Steven,

Je zou het volgende eens kunnen proberen met de Shapes:

Rechtsklik op een Shape en kies "AutoVorm opmaken..."
Klik op de Tab "Kenmerken" en activeer het 3e rondje.
(Verplaatsing en formaat niet gerelateerd aan cellen)

Ben benieuwd of het helpt.
 
Hallo Luc,

Ik heb het geprobeerd met .Placement = xlfreefloating op de shapes. Ik neem aan dat dat de juiste eigenschap is? (aantal shapes loopt van 50 - mogelijk 2000+ op basis van verschillende datasets en dat was iets te veel werk om handmatig te testen:D )

Maar dat werkt ook niet en het vreemde was dat als ik op een shape klik en die eigenschap opvraag gewoon nog het eerste rondje is geselecteerd en niet het 3e?

Mis ik nog iets?

Steven
 
Dus Steven het lukt niet het 3e rondje te selecteren.
Dat is jammer.
Dan kun je mijn voorstel dus niet testen.

Je zou het eens op een kleiner bestand kunnen oefenen.
Met ingedrukte Shift kun je alle shapes selecteren en het dan nog eens proberen.
 
Luc,

Ik heb inderdaad met shift even allemaal geselecteerd en het 3e rondje aangevinkt, maar ook dat heeft niet het gewenste resultaat. Bedankt voor de moeite maar ik laat het nu maar schieten.

Iedereen bedankt voor zijn moeite.

Steven
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan