El Visual Basic és un llenguatge de programació desenvolupat per Alan Cooper per a Microsoft. Aquest llenguatge és un dialecte del BASIC, amb importants afegits. La primera versió va ser presentada el 1991 amb la intenció de simplificar la programació utilitzant un ambient de desenvolupament completament gràfic que facilités la creació d'interfícies gràfiques.
Característiques generals És un llenguatge fàcil d'aprendre que té alguns aspectes més complicats per a programadors més experts. Per tant, és tan adequat per a programadors principiants com per a experts, guiat per esdeveniments, I centrat en un motor de formularis poderós que facilita el ràpid desenvolupament d'aplicacions gràfiques. La principal innovació, que més tard va ser adoptada per altres llenguatges, va ser l'ús d'una mena de llibreries, anomenades inicialment vbx i posteriorment ocx, que permeten contenir tota la funcionalitat d'un control i facilitar una ràpida incorporació als formularis.
La sintaxi, derivada de l'antic llenguatge BASIC, ha sigut ampliada amb el temps en afegir-s'hi les característiques típiques dels llenguatges estructurats moderns. S'hi ha afegit una implementació limitada de la Programació Orientada a Objectes (els mateixos formularis i controls són objectes), encara que s'admet el polimorfisme mitjançant l'ús de les interfícies, no admet l'herència. No requereix el maneig de punters i consta d'un maneig molt senzill de cadenes de caràcters. Disposa de diverses biblioteques per a gestió de bases de dades, podent connectar amb qualsevol base de dades d'ODBC (Open DataBase Connectivity: Informix, DBase, Access, MySQL, SQL Server, PostgreSQL,etc.) a través d'ADO (ActiveX Data Objects).
És utilitzat principalment per a aplicacions de gestió d'empreses, a causa de la rapidesa amb la qual pot fer-se un programa que utilitzi una base de dades senzilla, a més de l'abundància de programadors en aquest llenguatge.
El compilador de Microsoft genera executables que necessiten una DLL (biblioteca) perquè els seus executables funcionin, en alguns casos anomenada MSVBVMxy.DLL (acrònim de "Microsoft Visual Basic Virtual Machine x.y", sent x.y la versió) i en altres casos VBRUNXXX.DLL (acrònim de "Visual Basic Runtime X.XX"), que proveeix totes les funcions implementades en el llenguatge. A més, existeixen un gran nombre de biblioteques que faciliten l'accés a moltes funcions del sistema operatiu i la seva integració amb altres aplicacions.
Derivats El seu derivat VBScript (Visual Basic Script) és el llenguatge predeterminat per pàgines web ASP (Active Server Pages). A més, una extensió pròpia del llenguatge anomenada Visual Basic for Applications (VBA) permet codificar mòduls (també anomenats macros) per les aplicacions de Microsoft Office. Especialment a partir de la versió 6 del llenguatge es permet la interacció i generació d'objectes remots que poden ser invocats des de pàgines de scripts (concretament les ASP, encara que també és possible fer un enllaç utilitzant JSP, JavaServer Pages), allotjant-les en servidors web. Visual Basic.NET, part de la plataforma .NET, és un llenguatge pràcticament equivalent en funcionalitats a C# (per exemple, no admet pseudopunters), afegint la capacitat de programació orientada a objectes que les seves anteriors versions (com Visual Basic 6) no posseïen: herència i polimorfisme.
Versions Les versions de Visual Basic per a Windows són molt conegudes, però existeix una versió de Microsoft Visual Basic 1.0 per a MS-DOS però menys difosa que data de 1992. Era un entorn que, encara que en mode de text, incloïa un dissenyador de formularis en el que es podien arrossegar i deixar anar diferents controls.
L'última versió només per a PCs de 16 bits (el Windows XP és per a PCs 32 bits), en el Windows 3.0, ja tenia una detallada biblioteca de components per a tota classe d'usos. Durant la transició de Windows 3.11 a Windows 95, va aparèixer la versió 4.0 de Microsoft Visual Basic, que podia generar programes de 16 i 32 bits a partir d'un mateix codi font, a costa d'un gran augment en la mida dels arxius "runtime" necessaris. A més, se substituïren els controls VBX pels nous OCX. Amb la versió 5.0, es va implementar per primera vegada la possibilitat de compilar un codi natiu, obtenint una millora de rendiment considerable. Tant aquesta com la posterior 6.0 suportaven característiques pròpies dels llenguatges orientats a objectes, encara que sense algunes funcionalitats importants com la de l'herència, el polimorfisme i la sobrecàrrega. La versió 6.0 continua utilitzant-se massivament, molt més després de l'aparició de l'AO.
Les versions actuals de Visual Basic es basen en la plataforma .NET, encara que mantenen moltes de les característiques del llenguatge original tenen nombroses diferències que els fan incompatibles. Moltes vegades per portar un codi escrit en Visual Basic a Visual Basic .NET és necessari reescriure part del codi. La nova versió del llenguatge és en la major part equivalent al C# encara que presenta algunes diferències. Per això hi ha un debat sobre la validesa d'aquesta nova versió del llenguatge i els seus avantatges i inconvenients sobre C#. També és integrat en el mateix entorn de desenvolupament que els altres: Visual Studio .NET.
Codi d'exemple Alguns exemples del llenguatge de programació;
Programa per a mostrar un missatge emergent amb les paraules "Hola món!": Private Sub Form_Load() MsgBox "Hola món!" End Sub
Funció que retorna l'àrea d'un cercle: Private Function AreaDelCercle(Radi As Double) As Double Const PI = 3.14159265358979323846264 AreaDelCercle = PI * (Radi ^ 2) End Function
Codis d'error Llista de codis d'error generats per Visual Basic 6.0 en temps d'execució: 0: Llamada a procedimiento o argumento no válidos (Crida a un procediment o argument no vàlid) 3: Return sin GoSub (Return sense GoSub) 5: Llamada a procedimiento o argumento no válidos (Crida a un procediment o argument no vàlid) 6: Desbordamiento (Desbordament) 7: Memoria insuficiente (Memòria insuficient) 9: El subíndice está fuera del intervalo (El subíndex està fora de l'interval) 10: La matriz está fija o temporalmente bloqueada (La matriu está fixa o bloquejada temporalment) 11: División por cero (Divisió entre zero) 13: No coinciden los tipos (No coincideixen els tipus) 14: Espacio para cadenas insuficiente (Espai de cadenes insuficient) 16: Expresión demasiado compleja (Expressió massa complexa) 17: No se puede realizar la operación solicitada (No es pot dura terme l'operació sol·licitada) 18: Interrupción por parte del usuario (Interrupció per part de l'usuari) 20: Resume sin error (Resume sense error) 28: Espacio de pila insuficiente (Espai de pila insuficient) 35: Procedimiento Sub o Function no definido (Procediment Sub o Function no definit) 47: Hay demasiados clientes de la aplicación DLL (Hi ha massa clients de l'aplicació DLL) 48: Error al cargar la biblioteca DLL (Error al carregar la biblioteca DLL) 49: La convención de llamadas a DLL és incorrecta (La convenció de crides a DLL no és correcta) 51: Error interno (Error intern) 52: Nombre o número de archivo incorrecto (Nom o nombre d'arxiu incorrecte) 53: No se ha encontrado el archivo (No s'ha trobat l'arxiu) 54: Modo de archivo incorrecto (Mode d'arxiu incorrecte) 55: El archivo ya está abierto (L'arxiu ja està obert) 57: Error de E/S del dispositivo (Error d'E/S del dispositiu) 58: El archivo ya existe (L'arxiu ja existeix) 59: Longitud de registro incorrecta (Longitud de registre incorrecta) 61: Disco lleno (Disc ple) 62: La entrada de datos ha sobrepasado el final del archivo (L'entrada de dades ha sobrepassat el final de l'arxiu) 63: Número de registro incorrecto (Nombre de registre incorrecte) 67: Hay demasiados archivos (Hi ha massa arxius) 68: El dispositivo no está disponible (El dispositiu no està disponible) 70: Permiso denegado (Permís denegat) 71: Disco no preparado (Disc no preparat) 74: No se puede cambiar el nombre con una unidad de disco diferente (No es pot canviar el nom amb una unitat de disc diferent) 75: Error de acceso a ruta o archivo (Error en l'accés a una ruta o un arxiu) 76: No se ha encontrado la ruta de acceso (No s'ha trobat la ruta d'accés) 91: La variable de tipo Object o la variable de bloque With no está establecida (La variable de tipus Object o la variable de bloc With no està establerta) 92: El bucle For no está inicializado 93: La cadena modelo no es válida 94: Uso no válido de Null 96: No se pueden desactivar eventos de objeto porque el objeto ya desencadena el número máximo de eventos que admite 97: No se puede llamar a una función friend de un objeto que no sea una instancia de una clase 98: Una llamada a una propiedad o un método no puede incluir una referencia a un objeto privado, como un argumento o un valor de retorno 321: Formato de archivo no válido 322: No se puede crear un archivo temporal necesario 325: Formato no válido en el archivo de recursos 380: El valor de la propiedad no es válido 381: El índice de la matriz de propiedades no es válido 382: No se admite Set en tiempo de ejecución 383: No se admite Set (propiedad de sólo lectura) 385: Se necesita un índice de matriz de propiedades 387: Set no está permitido 393: No se admite Get en tiempo de ejecución 394: No se admite Get (propiedad de sólo escritura) 422: No se encontró la propiedad (No s'ha trobat la propietat) 423: No se ha encontrado la propiedad o el método (No s'ha trobat la propietat o el mètode) 424: Se requiere un objeto (És necessari un objecte) 429: El componente ActiveX no puede crear el objeto (El component ActiveX no pot crear l'objecte) 430: Esta clase no admite Automatización o la interfaz esperada (Aquesta classe no admet Automatització o la interfície esperada) 432: No se encontró el nombre del archivo o de la clase durante la operación de Automatización (No s'ha trobat el nom de l'arxiu o de la classe durant l'operació d'Automatització9 438: El objeto no acepta esta propiedad o método (L'objecte no accepta aquesta propietat o mètode) 440: Error de Automatización (Error d'Automatització) 442: Se ha perdido la conexión con la biblioteca de tipos o con la biblioteca de objetos para proceso remoto. Haga clic en Aceptar para quitar la referencia. (S'ha perdut la connexió amb la biblioteca de tipus o amb la biblioteca d'objectes per processos remots. Fes clic a Acceptar per treure la referència) 443: El objeto de Automatización no tiene un valor predeterminado (L'objecte d'Automatització no té un valor predeterminat) 445: El objeto no admite esta acción (l'objecte no admet aquesta acció) 446: El objeto no admite argumentos con nombre (l'objecte no admet arguments amb nom) 447: El objeto no admite la configuración regional actual (l'objecte no admet la configuració regional actual) 448: No se ha encontrado el argumento con nombre (no s'ha trobat l'argument amb nom) 449: El argumento no és opcional (l'argument no és opcional) 450: Número de argumentos erróneo o asignación de propiedad no válida (nombre d'arguments erroni o assignació de propietat invàlida) 451: El procedimiento Let de la propiedad no está definido y el procedimiento Get no ha devuelto un objeto () 452: Número ordinal no válido (nombre ordinal no vàlid) 453: No se encuentra la función de biblioteca DLL especificada (no es troba la funció de biblioteca DLL especificada) 454: No se encuentra el recurso de código (no es troba el recurs de còdigo) 455: Error en el bloqueo de los recursos de código (error al bloquejar els recursos del codi) 457: Esta clave ya está asociada a un elemento de esta colección (aquesta clau ja està associda a un element d'aquesta col·lecció) 458: La variable usa un tipo de Automatización no admitido en Visual Basic (la variable utilitza un tipus d'Automatització no admès a Visual Basic)