Re your Q2, the variable i remains as an Integer type, even though you have concatenated it into your messagebox string.
You can test this by inserting a breakpoint immediately after the messagebox code line and checking the Locals Window from the Debug menu.
You will see that it still appears as an integer with a value of 7.
If you want to create a string to hold message numbers, (perhaps because you want to compare this string against another one, you can do something like this:
Dim msgnumber As String = CStr("message" & i)
If msgnumber = "message7" Then
' some code here