If you just want a class that you can't inherit, use a NotInheritable class; but it won't be static/Shared. You could mark all the methods, properties, and members as Shared, but that's not strictly the same thing as a static class in C# since it's not enforced by the compiler.
If you really want the VB.Net equivalent to a C# static class, use a Module. It can't be inherited and all members, properties, and methods are static/shared.
From the CLR point of view, C# static class is just "sealed" and "abstract" class. You can't create an instance, because it is abstract, and you can't inherit from it since it is sealed. The rest is just some compiler magic.
Almost there. You've got to prevent instantiation, too.
NotInheritable Class MyStaticClass
''' <summary>
''' Prevent instantiation.
''' </summary>
Private Sub New()
End Sub
Public Shared Function MyMethod() As String
End Function
End Class
Shared is like method of static class.
NotInheritable is like sealed.
Private New is like static class can not be instantiated.