2017-07-25 6 views
0

J'essaie actuellement de supprimer des formes (formes d'encre dessinées par l'utilisateur et conservées lorsque la présentation était terminée) sur une diapositive avec une macro. Il ressemble à ceci:Powerpoint Supprimer les formes juste sur une partie d'une diapositive

Sub EraseInkOnSlide(oSl As Slide) 
' Erases any INK shapes drawn by the user and 
' retained when the user quits the slide show 
    Dim oSh As Shape 
    Dim x As Long 
    With oSl.Shapes 
    For x = .Count To 1 Step -1 
     If .Item(x).Type = 23 Then 
      .Item(x).Delete 
     End If 
    Next 
    End With 
End Sub 

Maintenant, je veux juste la macro pour supprimer l'encre des formes sur une partie de la présentation, par exemple dans un carré spécifique sur la diapositive.

Est-ce possible, si oui, comment?

+0

Avant de supprimer l'élément, ajoutez quelques tests supplémentaires. Si son .Top et .Left sont égaux ou supérieurs à .Top et .Left du carré ET si son .Top + .Height est = <.Top + .Height du carré ET si son .Left + .Width = < le carré .Left + .Width alors supprimez-le. –

+0

Fonctionne avec charme! Merci beaucoup! Peut-être écrire comme une réponse, donc je peux le définir comme la meilleure réponse de travail? –

+0

Heureux que cela a aidé, mais mieux encore, pourquoi ne pas poster le code qui fonctionne comme la réponse; cela devrait être plus utile à plus de gens que ma suggestion non-détaillée. –

Répondre

0

Avec l'aide de Steve je l'ai eu pour travailler. Voici le code:

Sub EraseInkOnSlide(oSl As Slide) 
' Erases any INK shapes drawn by the user and 
' retained when the user quits the slide show 
Dim oSh As Shape 
Dim x As Long 
With oSl.Shapes 
For x = .Count To 1 Step -1 
    If .Item(x).Type = 23 Then 
     If ((.Item(x).Top >= "square.top") And (.Item(x).Left >= "square.left")) And (.Item(x).Top + .Item(x).Height <= "square.top" + "square.heigth") And (.Item(x).Left + .Item(x).Width <= "square.left" + square.width") Then 
     .Item(x).Delete 
     End If 
    End If 
Next 
End With 
End Sub 

Le "square.x" représente vos coordonnées spécifiques que vous définissez pour votre carré.