You have posted in the wrong forum. CodeBank forums are for you to post code samples to share with others, not to ask questions. You post VB.NET questions in the VB.NET forum. I have asked the mods to move this thread.

As for the question, VB.NET supports a lot of what VB6 supported specifically so that VB6 code could be ported to VB.NET with little to no change. That doesn't mean that doing so is a good idea though. What you've posted there is quite horrible VB.NET code. In VB.NET, you should always use String.Format in preference to Format but, when all you want to format is a single value, you should use its own ToString method instead. In this case though, there is absolutely no reason to be formatting anything. If you want a good VB.NET function to do that job then it would look something like this:
Code:
Private Function ConvertFISToDecimal(fis As String) As Double
    'Validate the entire input.
    If Not Integer.TryParse(fis, Nothing) Then
        Throw New ArgumentException("The input was not in the correct format.", "fis")
    End If

    'Pad the input if inches and/or feet are missing.
    fis = fis.PadLeft(6, "0"c)

    'All but the last four characters represent the full feet.
    Dim feetLength = fis.Length - 4

    'Separate the input.
    Dim feet = CInt(fis.Substring(0, feetLength))
    Dim inches = CInt(fis.Substring(feetLength, 2))
    Dim sixteenths = CInt(fis.Substring(feetLength + 2, 2))

    'Validate the parts.
    If inches > 11 OrElse sixteenths > 15 Then
        Throw New ArgumentException("The input was not in the correct format.", "fis")
    End If

    Return feet + (inches / 12) + (sixteenths / (16 * 12))
End Function
If you want to round the result to a specific number of decimal places then you can do that with Math.Round, either inside the method or outside.