You could use an InputBox to get which column the user wants to use.
Dim lRet As Long
lRet = clng(Inputbox("Select column"))
You can then use that variable later in your code. Change where you have this:
You will also need to change this line:
NoOfNames = Application.CountA(Range("A:A")) - 1
I would suggest adding a function to convert numbers to letters:
Function to convert column number to letter?
Function Col_Letter(lngCol As Long) As String
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)
Your line should change to:
NoOfNames = Application.CountA(Range(Col_Letter(lRet) & ":" & Col_Letter(lRet))) - 1