You have End Sub, but no Sub statement.. is this the whole code? What if the user cancels the prompts?
Assuming you're in a standard module (e.g. Module1.bas), you'll want it to have Option Explicit at the top, and then the Sub statement defines the procedure you need to implement - consider making it explicitly Public, too:
Option Explicit
Public Sub WherePutMe()
'TODO
End Sub
That said "Where put me" is a horrible name for a procedure. Best practice is to use meaningful names that convey the purpose of the code - and since procedures do something, you'll want their names to generally start with a verb.
Unqualified, InputBox is invoking VBA.Interaction.InputBox, a VBA standard library function that prompts the user for a string, and the user can Cancel out of that prompt. When this happens, what you get is a null string pointer that implicitly converts to an empty string - but then, the user could very well enter an empty string and hit Ok, so before we validate the input we first need to know how the prompt was dismissed.
This quickly gets complicated and chaotic. We could abstract this complexity behind a function:
Private Function TryGetUserInput(ByVal prompt As String, ByRef result As String) As Boolean
result = InputBox(prompt)
TryGetUserInput = (StrPtr(result) <> 0)
End Function
And now we can do this:
Option Explicit
Public Sub WherePutMe()
Dim userRowInput As String, userRow As Long, isValid As Boolean
Do While Not isValid
If TryGetUserInput("Enter a row number", userRowInput) Then
'user submitted a value, now validate it
If IsNumeric(userRowInput) Then
'looks legit
userRow = CLng(userRowInput)
'...but is it?
isValid = userRow > 0
End If
Else
'user cancelled the prompt
Exit Sub
End If
If Not isValid Then MsgBox "Invalid row number. Please enter a positive integer between 1 and 1,048,576.", vbExclamation
Loop
'TODO: get and validate the column letter
End Sub
Avoid code that makes too many assumptions (broken assumption => bug; think of how any given instruction might possibly fail and throw an error that sends everything up in flames), and don't hesitate to break things down into small, specialized procedures and functions - like the above loop would look pretty neat in its own TryGetValidRowNumber function that returns False if the user cancelled out, True otherwise, with a ByRef output parameter holding a Long integer value that the caller could use directly:
Public Sub WherePutMe()
Dim rowNumber As Long
If Not TryGetValidRowNumber(rowNumber) Then Exit Sub
Dim columnLetter As String
If Not TryGetValidColumnLetter(columnLetter) Then Exit Sub
Dim targetCell As Range
Set targetCell = ActiveSheet.Range(columnLetter & rowNumber)
'TODO consume the targetCell as needed
End Sub