Je souhaite créer une macro VBA dans PPT pour Grouper des formes de même hauteur sur plusieurs lignes dans Powerpoint à l'aide de VBA. Mon premier pas serait idéalement comme cette image: Group Textboxes row wiseFormes de groupe à la même hauteur sur plusieurs lignes dans Powerpoint à l'aide de VBA
Il y a une matrice de zones de texte dans plusieurs lignes et colonnes uniformément réparties verticalement & horizontalement. Je veux sélectionner toutes les formes et exécuter une macro pour regrouper les zones de texte en lignes multiples. Le code ci-dessous est copié et pas encore final, Appréciez toute aide, des extraits pour cela, merci beaucoup.
Sub GroupSameHeightObjects()
' Dimension the variables.
Dim shapeObject As shape
Dim lSlideNumber As Long
Dim strPrompt, strTitle As String
Dim ShapeList() As String
Dim count As Long
' Initialize the counter.
count = 0
' Make sure PowerPoint is in slide view.
If ActiveWindow.ViewType <> ppViewSlide Then
' Set up the error message.
strPrompt = "You must be in slide view to run this macro." _
& " Change to slide view and run the macro again."
strTitle = "Not In Slide View"
' Display the error message.
MsgBox strPrompt, vbExclamation, strTitle
' Stop the macro.
End
End If
' Get the current slide number.
lSlideNumber = ActiveWindow.Selection.SlideRange.SlideNumber
' Loop through the shapes on the slide.
For Each shapeObject In _
ActivePresentation.Slides(lSlideNumber).Shapes
' See whether shape is a placeholder.
If shapeObject.Type <> msoPlaceholder Then
' Increment count if the shape is not a placeholder.
count = count + 1
' Get the name of the shape and store it in the ShapeList
' array.
ReDim Preserve ShapeList(1 To count)
ShapeList(count) = shapeObject.Name
End If
Next shapeObject
' If more than 1 object (excluding a placeholder object) is found,
' group the objects.
If count > 1 Then
With ActivePresentation.Slides(lSlideNumber).Shapes
' Group the shapes together.
.Range(ShapeList()).Group.Select
End With
Else
Select Case count
' One shape found.
Case 1
' Set up the message.
strPrompt = "Only one shape found." _
& " You need at least two shapes to group."
strTitle = "One Shape Available"
' Zero shapes found.
Case 0
' Set up the message.
strPrompt = "No shapes found. You need to have at " _
& "least two shapes, excluding placeholders."
strTitle = "No Shapes Available"
' An error occurred.
Case Else
' Set up the message.
strPrompt = "The macro found an error it could not correct."
strTitle = "Error"
End Select
' Display the message.
MsgBox strPrompt, vbExclamation, strTitle
End If
End Sub
juste une note sur votre code (ce qui est pas de solution à votre question) : Assurez-vous de connaître la différence entre 'End' et' E xit Sub'. 'End' termine réellement toutes les macros immédiatement ** mais' Exit Sub' se comporte comme si vous sautez à la fin de la procédure en cours et quitte simplement ce sous-marin sans affecter les autres codes (ce qui est probablement ce que vous voulez). –