Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$G$4" Then Exit Sub
Me.Ovals.Delete
Dim ovalShape As Oval
Dim leftPos As Single
Dim topPos As Single
Dim gap As Long
Dim i As Long
leftPos = Target.Offset(, 2).Left
topPos = Target.Top
gap = 20 'change the gap between shapes as desired
If Len(Target) > 0 Then
If IsNumeric(Target) Then
For i = 1 To Target.Value
Set ovalShape = Me.Ovals.Add(Left:=leftPos, Top:=topPos, Width:=72, Height:=72)
topPos = topPos + ovalShape.Height + gap
Next i
End If
End If
End Sub