Le langage Visual Basic Script dispose de moyens permettant de créer des procédures ou fonctions pouvant être appelées n'importe où dans un programme par l'instruction Call notamment.

L'instruction Sub permet de déclarer le nom, les arguments et les instructions formant une procédure.

[Public [Default] | Private] Sub Nom_Procédure [(Arguments)]
  ' Instructions...
End Sub

L'instruction Function permet de déclarer le nom, les arguments et les instructions formant une fonction.

[Public [Default] | Private] Function Nom_Fonction [(Arguments)]
  ' Instructions...
End Function

Les fonctions et procédures sont publiques (Public) par défaut, c'est-à-dire disponible dans l'ensemble d'une application VBScript.

Public Default est utilisé pour indiquer que la fonction ou la procédure est utilisée par défaut dans une classe (Class).

Private signifie que la fonction ou la procédure ne sera valable que dans l'espace de nom global du script courant.

Arguments représente une liste d'arguments séparés par des espaces blancs.

Un argument peut être composé selon la construction ci-dessous.

[ByVal | ByRef] nom_argument[( )]
ByVal indique un passage d'argument par valeur.
ByRef indique un passage d'argument par référence, soit l'adresse de la variable concernée.

Il est impossible de créer une fonction (Function) à l'intérieur d'une procédure (Sub) et vice-versa. De même qu'il n'est pas possible d'en créer dans une définition de propriété Property Get.

Une procédure Sub et une fonction Function sont des instructions différentes capables de prendre des arguments, d'exécuter un bloc d'instructions et de modifier la valeur de leurs arguments.

La différence réside dans la faculté d'une fonction de pouvoir être utilisée dans la partie droite d'une expression, celle qui suit le signe égal( =) afin de disposer directement de la valeur retournée par la fonction.

Variable = nom_fonction()

Pour retourner le résultat d'une fonction, il suffit de créer une variable réceptrice du résultat et de lui donner le nom de la fonction.

Function Addition(val1, val2)
  Addition = val1 + val2
End Function

Enfin, les procédures ou les fonctions acceptent des déclarations de variables implicites, ou explicites. Dans ce dernier cas, la variable devra être précédée de l'instruction Dim uniquement.

Exemple : [voir]
<html>
  <body>
    <%
      Sub aujourdhui()
        Dim jour_mois, mois, annee, resultat
        date_courante = Date()

        jour_mois = Day(date_courante)
        mois = Month(date_courante)
        annee = Year(date_courante)

        resultat = jour_mois & "/" & mois & "/" & annee
        Response.Write "Date d'aujourd'hui : " & resultat
      End Sub

      Call aujourdhui()
    %>

    <%
    Function modification()
       Dim objFSO
       Dim objFichier

       Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
       Set objFichier = _
               objFSO.GetFile(Request.ServerVariables("PATH_TRANSLATED"))

       modification = objFichier.DateLastModified
       Set objFichier = Nothing
       Set objFSO = Nothing
    End Function

    Dim date_modification
    date_modification = modification()
    Response.Write "Date de dernière modification : " _
                            & Day(date_modification) & " " _
                            & MonthName(Month(date_modification)) _
                            & " " & Year(date_modification)
    %>
  </body>
</html>