Hi badbee and welcome to VBAX
Here's some code that shows the basic method - as you can see, by referring to the placeholder object on the slidemaster, you can get its properties and use them to set up the new textbox.
Sub AddCustomTextbox()
Dim objTextBox As Shape
Dim objMasterTextBox As Shape
Dim shp As Shape
'get a reference to the body text placeholder on the slide master
For Each shp In ActivePresentation.SlideMaster.Shapes.Placeholders
If shp.PlaceholderFormat.Type = ppPlaceholderBody Then
Set objMasterTextBox = shp
Exit For
End If
Next
If objMasterTextBox Is Nothing Then
MsgBox "No body textbox found on slidemaster"
Else
'add textbox with size
Set objTextBox = ActiveWindow.Selection.SlideRange.Shapes.AddTextbox( _
msoTextOrientationHorizontal, 50, 50, 400, 24)
With objTextBox.TextFrame
.AutoSize = ppAutoSizeShapeToFitText
.TextRange.Text = "[Enter Text]"
.TextRange.ParagraphFormat.Bullet.Visible = msoFalse
End With
'match format with that of objMasterTextBox
'use the first paragraph, in case there is a mixture in the placeholder
With objTextBox.TextFrame.TextRange.Font
.Name = objMasterTextBox.TextFrame.TextRange.Paragraphs(1).Font.Name
.Size = objMasterTextBox.TextFrame.TextRange.Paragraphs(1).Font.Size
.Bold = objMasterTextBox.TextFrame.TextRange.Paragraphs(1).Font.Bold
.Italic = objMasterTextBox.TextFrame.TextRange.Paragraphs(1).Font.Italic
End With
'set more properties as required...
End If
objTextBox.TextFrame.TextRange.Characters.Select
End Sub
There are a lot of approaches to building this into custom functionality. If you frequently want to add pre-defined shapes (dynamic or otherwise), it might be better to create a class module and use the code it's Initialize event - then each time you want a new shape, just create an instance of that class.