Sub DrawLine_Example1() ActiveSheet.Shapes.AddLine 0, 0, 250, 250 End Sub |

If you run above macro you will get following result.

So the first two values are x and y coordinates of the starting point respectively. and next two values are x and y coordinates of end point. And here is another example

Sub DrawLine_Example2() ActiveSheet.Shapes.AddLine 20, 100, 100, 45 End Sub |

It will create line like this.

Now let's look at little advanced scenario. Assume you need to create a line between following two points.

So how we do that because we don't know exact x,y coordinates of those two points. Fortunately we can give start and end points from cell locations as well. So we can create the line using following code.

Sub DrawLine_Example3() Dim BeginX As Long Dim BeginY As Long Dim EndX As Long Dim EndY As Long With Range("B5") BeginX = .Left + .Width BeginY = .Top + .Height / 2 End With With Range("G9") EndX = .Left EndY = .Top + .Height / 2 End With ActiveSheet.Shapes.AddLine BeginX, BeginY, EndX, EndY End Sub |

In the above code starting point is given by following part.

With Range("B5") BeginX = .Left + .Width BeginY = .Top + .Height / 2 End With |

And end point is given by these 4 lines.

With Range("G9") EndX = .Left EndY = .Top + .Height / 2 End With |

Also you can replace

With Range("B5") BeginX = .Left + .Width BeginY = .Top + .Height / 2 End With |

With following code. Then you don’t need width for the calculations.

With Range("C5") BeginX = .Left BeginY = .Top + .Height / 2 End With |

With VBA you can not only create lines but also create any other shapes you need.