HOLA!!!
Esta bien lo que planteas, pero planteate para que declaras sFunction, si se usa una sola vez, osea, perdes 2 lineas de codigo y reservas un espacio en memoria que no sera necesario nunca mas.
Esta bien que quieras declararla pero quiero que entiendas que no es practico, no mejora la lectura del codigo, no mejora la longitud del codigo y tampoco el rendimiento.
Es mas, no quise cambiarte la parte que dice sFile por que tampoco es necesaria, ya que siempre sera WScript.ScriptFullName... sino no seria Melt seria una funcion para eliminado con retraso desde otro script.
Por ende tu codigo si se quiere Funcionalizar (ser llamado de una funcion) si lo reducimos al maximo seria asi:
Voy a usar un sub para no entregar retorno (que tampoco entrega tu funcion).
sMelt()
Sub sMelt()
On Error Resume Next
Execute("WScript.Sleep 3000: Set Melt = CreateObject(" & Chr(34) & "Scripting.FileSystemObject" & Chr(34) & "): Melt.DeleteFile " & Chr(34) & WScript.ScriptFullName & Chr(34))
End Sub
Se podria seguir reduciendo quitando las llamadas a Chr(34) ahi si convendria usar una variable para no llamar tantas veces a una funcion con el mismo parametro, aunque tambien podrias poner las comillas dentro del string sin usar ni un Chr usando "" supongo, no lo testee aun esto ultimo de la doble comilla doble.
GRACIAS POR LEER!!!