Using the Me keyword doesn't affect performance. It is purely a matter of style. I think it improves clarity to your code if you use it. So you know at first glance that the member used belongs to the object itself and it is not a local variable for example.
The Me keyword is used any time we want our code to refer to members (methods, properties, ...) within the current object. The Me keyword is analogous to the this keyword in C++ and C# languages. The Me keyword is usually optional, since any method call is assumed to refer to the current object unless explicitly noted otherwise.
The exception is when you're using shadowed variables. A shadowed variable is a variable at procedure level with the same name as a variable of the class. For example:
Public Class ExampleClass
Private FirstName As String
Public Sub ExampleMethod()
Dim FirstName As String
FirstName = "Stefan"
End Sub
End Class
The variable FirstName is declared at the class level and within the ExampleMethod method. Within ExampleMethod only the local, or shadowed, variable is used unless we explicitly reference the class-level variable with the Me keyword:
Public Class ExampleClass
Private FirstName As String
Public Sub ExampleMethod()
Dim FirstName As String
FirstName = "Stefan"
Me.FirstName = "Carl Gustav"
End Sub
End Class