Try this code:
ActiveSheet.ListObjects.Add(xlSrcRange, _
Range("A1").CurrentRegion, XlListObjectHasHeaders:=xlYes, _
TableStyleName:="TableStyleLight15").Name = "Table1"
Before

After (if some columns have no headers, they will be created)

Side note: to prevent an error related to conflict of table names and/or ranges (you cannot create another table on the same sheet with the same name or range), you can use the IsOverlappedListObject
function, which I wrote below with a usage example:
Function IsOverlappedListObject(rng As Range, TargetName As String, Optional Reason As String = "") As Boolean
Dim x As ListObject
On Error Resume Next
Set x = rng.Parent.ListObjects(TargetName)
If Err.Number = 0 Then
IsOverlappedListObject = True
Reason = "The ListObject named """ & TargetName & """ already exists on the worksheet """ & rng.Parent.Name & """"
End If
On Error GoTo out
Reason = Reason & IIf(Reason = "", "", vbLf) & "The range " & rng.Address & " overlaps (at least) with the ListObject(""" & rng.ListObject.Name & """) on the " & rng.Parent.Name & " worksheet"
IsOverlappedListObject = True
out:
End Function
' usage example
Sub MakeTable()
Dim rng As Range, TargetName As String, Reason As String
Set rng = Range("A1").CurrentRegion
TargetName = "Table1"
If IsOverlappedListObject(rng, TargetName, Reason) Then
MsgBox "Can't make ListObject - the reason is " & vbLf & Reason, vbCritical
Else
ActiveSheet.ListObjects.Add(xlSrcRange, _
rng, XlListObjectHasHeaders:=xlYes, _
TableStyleName:="TableStyleLight15").Name = TargetName
End If
End Sub