Toggle a design grid on and off
This will allow you to add or remove a design grid on a slide.
By editiing the values as shown below, you can change the spacing and color of the grid.
It's not a snap-to grid and you can't lock it in position, but if you accidentally move the gridlines, you can easily toggle them off and back on again.
Run Sub ToggleGrid to use the macros. It figures out whether the gridlines need to be added or removed, then does so.
Option Explicit ' Edit these two values to change the grid spacing in inches Const dVspacing As Double = 0.25 Const dHspacing As Double = 0.25 ' Edit these three values to change the RGB color of the grid lines Const lGridColorRed As Long = 225 Const lGridColorGreen As Long = 225 Const lGridColorblue As Long = 225 Sub ToggleGrid() If Len(ActiveWindow.Selection.SlideRange(1).Tags("GRIDDED")) > 0 Then Call RemoveGrid Else Call CreateGrid End If End Sub Function CreateGrid() ' Creates gridlines ' Edit the values below to change spacing and color Dim oSh As Shape Dim oSl As Slide Dim x As Double Dim dBeginX As Double Dim dBeginY As Double Dim dEndX As Double Dim dEndY As Double ' these hold dVspacing and dHspacing converted to points Dim dVspace As Double Dim dHspace As Double dVspace = dVspacing * 72 dHspace = dHspacing * 72 dBeginX = 0 dBeginY = 0 dEndX = ActivePresentation.PageSetup.Slidewidth dEndY = ActivePresentation.PageSetup.Slideheight Set oSl = ActiveWindow.Selection.SlideRange(1) With oSl ' add vertical gridlines For dBeginX = 0 To ActivePresentation.PageSetup.Slidewidth Set oSh = oSl.Shapes.AddLine(dBeginX, dBeginY, dBeginX, dEndY) With oSh ' Change RGB value here: .Line.ForeColor.RGB = RGB(lGridColorRed, lGridColorGreen, lGridColorblue) Call .Tags.Add("GRIDLINE", "YES") End With dBeginX = dBeginX + dHspace Next ' add horizontal gridlines dBeginX = 0 dBeginY = 0 For dBeginY = 0 To ActivePresentation.PageSetup.Slideheight Set oSh = oSl.Shapes.AddLine(dBeginX, dBeginY, dEndX, dBeginY) With oSh ' Change RGB value here: .Line.ForeColor.RGB = RGB(225, 225, 225) Call .Tags.Add("GRIDLINE", "YES") End With dBeginY = dBeginY + dVspace Next ' Mark the slide so we know that it's gridded Call .Tags.Add("GRIDDED", "YES") End With End Function Function RemoveGrid() Dim oSh As Shape Dim x As Long For x = ActiveWindow.Selection.SlideRange(1).Shapes.Count To 1 Step -1 Set oSh = ActiveWindow.Selection.SlideRange(1).Shapes(x) If Len(oSh.Tags("GRIDLINE")) > 0 Then oSh.Delete End If Next ' Mark the slide so we know that it's gridded ActiveWindow.Selection.SlideRange(1).Tags.Delete ("GRIDDED") End Function
See How do I use VBA code in PowerPoint? to learn how to use this example code.