Está en la página 1de 29

LISTA DE INSTRUCCIONES VISUAL BASIC

 ActiveCell

Devuelve un objeto Range que representa la celda activa en la ventana activa (la ventana
de arriba) o en la ventana especificada. Si la ventana no muestra una hoja de trabajo, esta
propiedad falla. Solo lectura.

Sintaxis

expresión _ Celda activa

expresión Una variable que representa un objeto Aplicación .

Observaciones

Si no especifica un calificador de objeto, esta propiedad devuelve la celda activa en la


ventana activa.

Tenga cuidado de distinguir entre la celda activa y la selección. La celda activa es una sola
celda dentro de la selección actual. La selección puede contener más de una celda, pero
solo una es la celda activa.

Las siguientes expresiones devuelven la celda activa y son todas equivalentes.

ActiveCell

Application.ActiveCell

ActiveWindow.ActiveCell

Application.ActiveWindow.ActiveCell
 ActiveWindow

Devuelve un objeto Window que representa la ventana activa de Excel (la ventana de
arriba). Devuelve Nothing si no hay ventanas abiertas. Solo lectura.

Sintaxis

expresión _ Ventana activa

expresión Una variable que representa un objeto Aplicación .

Ejemplo

Este ejemplo muestra el nombre ( propiedad Caption ) de la ventana activa de Excel.

MsgBox "The name of the active window is " & ActiveWindow.Caption

 ActiveWorkbook

Devuelve el objeto actualmente seleccionado en la hoja de cálculo activa para un objeto


de aplicación . Devuelve Nothing si no hay objetos seleccionados. Use el método Select
para establecer la selección y use la función TypeName para descubrir el tipo de objeto
que está seleccionado.

Sintaxis

expresión _ Selección

expresión Una variable que representa un objeto Aplicación .


Observaciones

El tipo de objeto devuelto depende de la selección actual (por ejemplo, si se selecciona


una celda, esta propiedad devuelve un objeto Rango ). La
propiedad Selection devuelve Nothing si no se selecciona nada.

Usar esta propiedad sin calificador de objeto es equivalente a usar Application.Selection.

Ejemplo

Este ejemplo borra la selección en la Hoja1 (suponiendo que la selección es un rango de


celdas).

Worksheets("Sheet1").Activate

Selection.Clear

 Application

Cuando se usa sin un calificador de objeto, esta propiedad devuelve un


objeto Aplicación que representa la aplicación de Microsoft Excel.

Cuando se usa con un calificador de objeto, esta propiedad devuelve un objeto


de aplicación que representa al creador del objeto especificado (puede usar esta
propiedad con un objeto de automatización OLE para devolver la aplicación de ese
objeto). Solo lectura.

Sintaxis

expresión _ Solicitud
expresión Una variable que representa un objeto Aplicación .

Ejemplo

Este ejemplo muestra un mensaje sobre la aplicación que creó myObject

Set myObject = ActiveWorkbook

If myObject.Application.Value = "Microsoft Excel" Then

MsgBox "This is an Excel Application object."

Else

MsgBox "This is not an Excel Application object."

End If

 Cells

Devuelve un objeto Range que representa todas las celdas de la hoja de cálculo activa. Si
el documento activo no es una hoja de trabajo, esta propiedad falla.

Sintaxis

expresión _ Células

expresión Una variable que representa un objeto Aplicación .

Observaciones

Debido a que la propiedad Item es la propiedad predeterminada para el objeto Range ,


puede especificar el índice de fila y columna inmediatamente después de la palabra
clave Cells . Para obtener más información, consulte la propiedad Item y los ejemplos de
este tema.
El uso de esta propiedad sin un calificador de objeto devuelve un objeto Range que
representa todas las celdas de la hoja de cálculo activa.

Ejemplo

Este ejemplo examina los datos de cada fila e inserta una fila en blanco cada vez que
cambia el valor de la columna A.

Sub ChangeInsertRows()
Application.ScreenUpdating = False
Dim xRow As Long

For xRow = Application.Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1


If Application.Cells(xRow, 1).Value <> Application.Cells(xRow - 1, 1).Value Then
Rows(xRow).Resize(1).Insert
Next xRow

Application.ScreenUpdating = True
End Sub

 Debug

El objeto Debug tiene dos métodos, Print y Assert .

La expresión Imprimir cadena envía cadena expr como salida a la ventana


Inmediato en tiempo de ejecución de depuración .

La expresión Assert evalúa la expresión y, si es False , los puntos de interrupción en el


depurador.
 Dim

Devuelve o establece un objeto ColorFormat que representa el color de la forma


especificada después de que se haya creado. Solo lectura.

Sintaxis

expresión _DimColor

expresión Una variable que representa un objeto AnimationSettings .

Valor de retorno

ColorFormato

Observaciones

Si no obtiene el efecto que espera, verifique sus otras configuraciones de compilación. No


verá el efecto de la propiedad DimColor a menos que la propiedad TextLevelEffect del
objeto AnimationSettings se establezca en algo distinto de ppAnimateLevelNone , la
propiedad AfterEffect se establezca en ppAfterEffectDim y la propiedad Animate se
establezca en True . Además, si la forma especificada es el único elemento o el último
elemento que se crea en la diapositiva, la forma no se atenuará. Para cambiar el orden de
construcción de las formas en una diapositiva, use la propiedad AnimationOrder .

Ejemplo

Este ejemplo agrega una diapositiva que contiene tanto un título como una lista de tres
elementos a la presentación activa, configura el título y la lista para que se atenúen
después de construirse, y establece el color con el que se atenuará cada uno de ellos.
With ActivePresentation.Slides.Add(2, ppLayoutText).Shapes
With .Item(1)
.TextFrame.TextRange.Text = "Sample title"
With .AnimationSettings
.TextLevelEffect = ppAnimateByAllLevels
.AfterEffect = ppAfterEffectDim
.DimColor.SchemeColor = ppShadow
.Animate = True
End With
End With

With .Item(2)
.TextFrame.TextRange.Text = "Item one" _
& Chr(13) & "Item two"
With .AnimationSettings
.TextLevelEffect = ppAnimateByFirstLevel
.AfterEffect = ppAfterEffectDim
.DimColor.RGB = RGB(100, 150, 130)
.Animate = True
End With
End With
End With

 Exit

Sale de un bloque de código Do…Loop , For…Next , Function , Sub o Property


.

Sintaxis

Salir Hacer
Salir para
Salir Función
Salir Propiedad
Salir Sub
La sintaxis de la instrucción Exit tiene estas formas:
SINTAXIS
Declaración Descripción
Salir Hacer Proporciona una forma de salir de una instrucción Do...Loop . Solo se puede usar dentro de una
sentencia Do...Loop . Exit Do transfiere el control a la instrucción que sigue a la
instrucción Loop . Cuando se usa dentro de instrucciones Do...Loop anidadas , Exit Do transfiere el
control al bucle que está un nivel anidado por encima del bucle donde ocurre Exit Do.
Salir por Proporciona una forma de salir de un bucle For . Solo se puede usar en un bucle For...Next o For
Each...Next . Exit For transfiere el control a la sentencia que sigue a la sentencia Next . Cuando se
usa dentro de bucles For anidados , Exit For transfiere el control al bucle que está un nivel anidado
por encima del bucle donde se produce Exit For .
Función de Sale inmediatamente del procedimiento de Función en el que aparece. La ejecución continúa con la
salida sentencia que sigue a la sentencia que llamó a la función .
Salir de la Sale inmediatamente del procedimiento Property en el que aparece. La ejecución continúa con la
propiedad sentencia que sigue a la sentencia que llamó al procedimiento Property .
Salir de Sub Sale inmediatamente del procedimiento Sub en el que aparece. La ejecución continúa con la
sentencia que sigue a la sentencia que llamó al procedimiento Sub .

Observaciones

No confunda las declaraciones de salida con las declaraciones de finalización. La salida no


define el final de una estructura.

Ejemplo

Este ejemplo utiliza la instrucción Exit para salir de un bucle For...Next , un


bucle Do...Loop y un procedimiento Sub .
Sub ExitStatementDemo()
Dim I, MyNum
Do ' Set up infinite loop.
For I = 1 To 1000 ' Loop 1000 times.
MyNum = Int(Rnd * 1000) ' Generate random numbers.
Select Case MyNum ' Evaluate random number.
Case 7: Exit For ' If 7, exit For...Next.
Case 29: Exit Do ' If 29, exit Do...Loop.
Case 54: Exit Sub ' If 54, exit Sub procedure.
End Select
Next I
Loop
End Sub
 For Each –Next

Las declaraciones For Each...Next repiten un bloque de declaraciones para cada objeto en
una colección o cada elemento en una matriz . Visual Basic establece automáticamente
una variable cada vez que se ejecuta el bucle. Por ejemplo, el
siguiente procedimiento suma 10 al valor de cada celda en el rango A1 a A10.

Sub Add10ToAllCellsInRange()

Dim rng As Range

For Each rng In Range("A1:A10")

rng.Value = rng.Value + 10

Next

End Sub

El siguiente código recorre cada elemento de una matriz y establece el valor de cada uno
en el valor de la variable de índice I.

Dim TestArray(10) As Integer, I As Variant

For Each I In TestArray

TestArray(I) = I

Next I

 If-then-else-end if

Utilice la sentencia If...Then...Else para ejecutar una sentencia específica o un bloque de


sentencias, según el valor de una condición. Las declaraciones If...Then...Else se pueden
anidar en tantos niveles como necesite.

Sin embargo, para facilitar la lectura, es posible que desee utilizar una instrucción Select
Case en lugar de varios niveles de instrucciones anidadas If...Then...Else .
Ejecutar sentencias si una condición es verdadera

Para ejecutar solo una declaración cuando una condición es True , use la sintaxis de una
sola línea de la declaración If...Then...Else . El siguiente ejemplo muestra la sintaxis de una
sola línea, omitiendo la palabra clave Else .

Sub FixDate()

myDate = #2/13/95#

If myDate < Now Then myDate = Now

End Sub

Para ejecutar más de una línea de código, debe usar la sintaxis de varias líneas. Esta
sintaxis incluye la instrucción End If , como se muestra en el siguiente ejemplo.

Sub AlertUser(value as Long)

If value = 0 Then

AlertLabel.ForeColor = "Red"

AlertLabel.Font.Bold = True

AlertLabel.Font.Italic = True

End If

End Sub

 InputBox

Muestra un mensaje en un cuadro de diálogo, espera a que el usuario ingrese texto o haga
clic en un botón y devuelve una cadena que contiene el contenido del cuadro de texto.

Sintaxis

InputBox ( solicitud , [ título ], [ predeterminado ], [ xpos ], [ ypos ] , [archivo


de ayuda , contexto ])
La sintaxis de la función InputBox tiene estos argumentos con nombre :

S I N T A XI S

Parte Descripción

Requerido. Expresión de cadena que se muestra como mensaje en el cuadro de diálogo. La longitud
máxima del aviso es de aproximadamente 1024 caracteres, según el ancho de los caracteres
inmediato utilizados. Si el indicador consta de más de una línea, puede separar las líneas utilizando un carácter de
retorno de carro ( Chr (13)), un carácter de salto de línea ( Chr (10)) o una combinación de caracteres de
retorno de carro y salto de línea (( Chr (13) & ( Chr (10)) entre cada línea.

Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si omite
título
el título , el nombre de la aplicación se coloca en la barra de título.

Opcional. Expresión de cadena que se muestra en el cuadro de texto como respuesta predeterminada si
defecto
no se proporciona ninguna otra entrada. Si omite predeterminado , el cuadro de texto se muestra vacío.

Opcional. Expresión numérica que especifica, en twips, la distancia horizontal del borde izquierdo del
pos x cuadro de diálogo desde el borde izquierdo de la pantalla. Si se omite xpos , el cuadro de diálogo se
centra horizontalmente.

Opcional. Expresión numérica que especifica, en twips, la distancia vertical del borde superior del cuadro
ypos de diálogo desde la parte superior de la pantalla. Si se omite ypos , el cuadro de diálogo se coloca
verticalmente aproximadamente a un tercio de la parte inferior de la pantalla.

Opcional. Expresión de cadena que identifica el archivo de ayuda que se utilizará para proporcionar
archivo de
ayuda sensible al contexto para el cuadro de diálogo. Si se proporciona un archivo de ayuda, también se
ayuda
debe proporcionar el contexto .

Opcional. Expresión numérica que es el número de contexto de Ayuda asignado al tema de Ayuda
contexto adecuado por el autor de la Ayuda. Si se proporciona el contexto , también se debe proporcionar
el archivo de ayuda.
Observaciones

Cuando se proporcionan tanto el archivo de ayuda como el contexto , el usuario puede


presionar F1 (Windows) o AYUDA (Macintosh) para ver el tema de ayuda correspondiente
al contexto . Algunas aplicaciones host , por ejemplo, Microsoft Excel, también agregan
automáticamente un botón de Ayuda al cuadro de diálogo. Si el usuario elige Aceptar o
presiona ENTRAR, la función InputBox devuelve lo que está en el cuadro de texto. Si el
usuario elige Cancelar , la función devuelve una cadena de longitud cero ("").

El cuadro de texto acepta solo 255 caracteres. La cadena de retorno se trunca a 254
caracteres.

El cuadro de texto no acepta saltos de línea, como Mayús+Intro . Si el usuario pega texto
con un salto de línea en el cuadro de texto, el texto se trunca en el salto de línea.

Nota

Para especificar más que el primer argumento nombrado, debe usar InputBox en
una expresión . Para omitir algunos argumentos posicionales , debe incluir el delimitador
de coma correspondiente.

Ejemplo

Este ejemplo muestra varias formas de usar la función InputBox para solicitar al usuario
que ingrese un valor. Si se omiten las posiciones x e y, el cuadro de diálogo se centra
automáticamente para los ejes respectivos. La variable MyValuecontiene el valor ingresado
por el usuario si el usuario elige Aceptar o presiona la tecla ENTER. Si el usuario
elige Cancelar , se devuelve una cadena de longitud cero.
Dim Message, Title, Default, MyValue

Message = "Enter a value between 1 and 3" ' Set prompt.

Title = "InputBox Demo" ' Set title.

Default = "1" ' Set default.

' Display message, title, and default value.

MyValue = InputBox(Message, Title, Default)

' Use Helpfile and context. The Help button is added automatically.

MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)

' Display dialog box at position 100, 100.

MyValue = InputBox(Message, Title, Default, 100, 100)

 MsgBox

Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve
un número entero que indica en qué botón hizo clic el usuario.

Sintaxis

MsgBox ( mensaje , [ botones ,] [ título ,] [ archivo de ayuda , contexto ])

La sintaxis de la función MsgBox tiene estos argumentos con nombre :

S I N T A XI S
Parte Descripción

inmediato Requerido. Expresión de cadena que se muestra como mensaje en el cuadro de


diálogo. La longitud máxima del aviso es de aproximadamente 1024 caracteres,
según el ancho de los caracteres utilizados. Si el indicador consta de más de una
línea, puede separar las líneas utilizando un carácter de retorno de carro ( Chr (13)),
un carácter de salto de línea ( Chr (10)) o una combinación de caracteres de retorno
de carro - salto de línea ( Chr (13) & Chr (10)) entre cada línea.

botones Opcional. Expresión numérica que es la combinación de valores que especifican el


número y tipo de botones a mostrar, el estilo de icono a usar, la identidad del botón
predeterminado y la modalidad del cuadro de mensaje. Si se omite, el valor
predeterminado para los botones es 0.

título Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de
diálogo. Si omite el título , el nombre de la aplicación se coloca en la barra de título.

archivo de Opcional. Expresión de cadena que identifica el archivo de ayuda que se utilizará
ayuda para proporcionar ayuda sensible al contexto para el cuadro de diálogo. Si se
proporciona un archivo de ayuda, también se debe proporcionar el contexto .

contexto Opcional. Expresión numérica que es el número de contexto de Ayuda asignado al


tema de Ayuda adecuado por el autor de la Ayuda. Si se proporciona el contexto ,
también se debe proporcionar el archivo de ayuda.

Range

Devuelve un objeto Range que representa una celda o un rango de celdas.

Sintaxis

expresión _ Rango ( Celda1 , Celda2 )

expresión Una variable que representa un objeto Aplicación .

Parámetros
PARÁMETROS
Nombre Requerido/Opcional Tipo de Descripción
datos
Celda1 Requerido Variante El nombre del rango. Esta debe ser una referencia de
estilo A1 en el idioma de la macro. Puede incluir el
operador de rango (dos puntos), el operador de
intersección (un espacio) o el operador de unión (una
coma). También puede incluir signos de dólar, pero se
ignoran. Utilice un nombre local definido en cualquier
parte del rango. Si usa un nombre, se supone que el
nombre está en el idioma de la macro.

celda2 Opcional Variante La celda en la esquina superior izquierda e inferior


derecha del rango. Puede ser un objeto Range que
contiene una sola celda, una columna completa o una fila
completa, o puede ser una cadena que nombra una sola
celda en el idioma de la macro.

Observaciones

Cuando se usa sin un calificador de objeto, esta propiedad es un atajo para


ActiveSheet.Range (devuelve un rango de la hoja activa; si la hoja activa no es una hoja de
trabajo, la propiedad falla).

Cuando se aplica a un objeto Range , la propiedad es relativa al objeto Range . Por


ejemplo, si la selección es la celda C3, Selection.Range("B1")devuelve la celda D3 porque es
relativa al objeto Range devuelto por la propiedad Selection . Por otro lado, el
código ActiveSheet.Range("B1")siempre devuelve la celda B1.
Ejemplo

Este ejemplo establece el valor de la celda A1 en Sheet1 en 3.14159.

Worksheets("Sheet1").Range("A1").Value = 3.14159

 Selection

Devuelve el objeto actualmente seleccionado en la hoja de cálculo activa para un objeto


de aplicación . Devuelve Nothing si no hay objetos seleccionados. Use el método Select
para establecer la selección y use la función TypeName para descubrir el tipo de objeto
que está seleccionado.

Sintaxis

expresión _ Selección

expresión Una variable que representa un objeto Aplicación .

Observaciones

El tipo de objeto devuelto depende de la selección actual (por ejemplo, si se selecciona


una celda, esta propiedad devuelve un objeto Rango ). La
propiedad Selection devuelve Nothing si no se selecciona nada.

Usar esta propiedad sin calificador de objeto es equivalente a usar Application.Selection.


Ejemplo

Este ejemplo borra la selección en la Hoja1 (suponiendo que la selección es un rango de


celdas).

Worksheets("Sheet1").Activate

Selection.Clear

 Set

ActiveX Data Objects (ADO) le permite manipular la estructura de su base de datos y los
datos que contiene desde Visual Basic. Muchos objetos ADO corresponden a objetos que
ve en su base de datos; por ejemplo, un objeto Tabla corresponde a una tabla de
Access. Un objeto Field corresponde a un campo en una tabla.

La mayoría de las propiedades que puede establecer para los objetos ADO son
propiedades ADO. Estas propiedades están definidas por el motor de la base de datos de
Access y se establecen de la misma manera en cualquier aplicación que incluya el motor
de la base de datos de Access. Algunas propiedades que puede establecer para los objetos
ADO están definidas por Access y no son reconocidas automáticamente por el motor de la
base de datos de Access. La forma en que establece las propiedades para los objetos ADO
depende de si una propiedad está definida por el motor de base de datos de Access o por
Access.

Establecer propiedades ADO para objetos ADO

Para establecer una propiedad definida por el motor de la base de datos de Access,
consulte el objeto en la jerarquía de ADO. La forma más fácil y rápida de hacer esto es
crear variables de objeto que representen los diferentes objetos con los que necesita
trabajar y hacer referencia a las variables de objeto en los pasos posteriores de su
código. Por ejemplo, el siguiente código crea un nuevo objeto TableDef y establece su
propiedad Name :

Dim tbl As New ADOX.Table

Dim cnn As ADODB.Connection

Set cnn = CurrentProject.Connection

tbl.Name = "Contacts"

 Sheets

Devuelve una colección Sheets que representa todas las hojas del libro
activo. Objeto Hojas de solo lectura .

Sintaxis

expresión _ Hojas

expresión Una expresión que devuelve un objeto Aplicación .

Observaciones

Usar esta propiedad sin un calificador de objeto es equivalente a usar


ActiveWorkbook.Sheets.

Ejemplo

Este ejemplo crea una nueva hoja de trabajo y luego coloca una lista de los nombres de las
hojas del libro de trabajo activo en la primera columna.

Set newSheet = Sheets.Add(Type:=xlWorksheet)

For i = 1 To Sheets.Count
 Sub-End Sud
newSheet.Cells(i, 1).Value = Sheets(i).Name

Next i
Declara el nombre, los argumentos y el código que forman el cuerpo de
un procedimiento Sub .

Sintaxis

[ Privado | Público | Amigo ] [ Estático ] Sub nombre [ ( arglist ) ]


[ sentencias ]
[ Exit Sub ]
[ sentencias ]
End Sub

La sintaxis de la instrucción Sub tiene estas partes:

SINTAXIS

Parte Descripción

Público Opcional. Indica que el procedimiento Sub es accesible para todos los demás procedimientos en todos los módulos . Si se
usa en un módulo que contiene una instrucción Option Private , el procedimiento no está disponible fuera del proyecto .

Privado Opcional. Indica que el procedimiento Sub es accesible solo para otros procedimientos en el módulo donde se declara.

Amigo Opcional. Se utiliza sólo en un módulo de clase . Indica que el procedimiento Sub es visible en todo el proyecto , pero no
visible para un controlador de una instancia de un objeto.

Estático Opcional. Indica que las variables locales del procedimiento Sub se conservan entre llamadas. El atributo Static no afecta
las variables que se declaran fuera de Sub , incluso si se usan en el procedimiento.

nombre Requerido. Nombre del Suplente ; sigue las convenciones estándar de nomenclatura de variables .

lista de Opcional. Lista de variables que representan argumentos que se pasan al procedimiento Sub cuando se llama. Varias
argumentos variables están separadas por comas.

declaraciones Opcional. Cualquier grupo de sentencias que se van a ejecutar dentro del procedimiento Sub .

El argumento arglist tiene la siguiente sintaxis y partes:


[ Opcional ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ Como tipo ] [ = valor
predeterminado ]

TABLA 2

Parte Descripción

Opcional Opcional. Palabra clave que indica que no se requiere un argumento. Si se usa, todos los argumentos subsiguientes
en arglist también deben ser opcionales y declarados mediante la palabra clave Optional . Optional no se puede usar para
ningún argumento si se usa ParamArray .

PorVal Opcional. Indica que el argumento se pasa por valor .

PorRef Opcional. Indica que el argumento se pasa por referencia . ByRef es el valor predeterminado en Visual Basic.

ParamArray Opcional. Se usa solo como el último argumento en arglist para indicar que el argumento final es una matriz opcional de
elementos Variant . La palabra clave ParamArray le permite proporcionar un número arbitrario de
argumentos. ParamArray no se puede usar con ByVal , ByRef u Optional .

nombrevar Requerido. Nombre de la variable que representa el argumento; sigue las convenciones estándar de nomenclatura de
variables.

escribe Opcional. Tipo de datos del argumento pasado al procedimiento; puede


ser Byte , Boolean , Integer , Long , Currency , Single , Double , Decimal (actualmente no admitido), Date , String (solo de
longitud variable), Object , Variant o un tipo de objeto específico . Si el parámetro no es Optional , también se puede
especificar un tipo definido por el usuario .

valor por Opcional. Cualquier expresión constante o constante . Válido solo para parámetros opcionales . Si el tipo es un objeto , un
defecto valor predeterminado explícito solo puede ser Nothing .

Observaciones

Si no se especifica explícitamente mediante Public , Private o Friend , los


procedimientos Sub son públicos de forma predeterminada.

Si no se usa Static , el valor de las variables locales no se conserva entre llamadas.

La palabra clave Amigo solo se puede usar en módulos de clase. Sin embargo, se puede
acceder a los procedimientos de Amigo mediante procedimientos en cualquier módulo de
un proyecto. Un procedimiento Friend no aparece en la biblioteca de tipos de su clase
principal, ni un procedimiento Friend puede vincularse en tiempo de ejecución.
Los subprocedimientos pueden ser recursivos; es decir, pueden llamarse a sí mismos para
realizar una determinada tarea. Sin embargo, la recursividad puede provocar un
desbordamiento de pila. La palabra clave Static generalmente no se usa con
procedimientos Sub recursivos .

Todo el código ejecutable debe estar en los procedimientos . No puede definir un


procedimiento Sub dentro de otro procedimiento Sub , Function o Property .

Las palabras clave Exit Sub provocan una salida inmediata de un procedimiento Sub . La
ejecución del programa continúa con la sentencia que sigue a la sentencia que llamó al
procedimiento Sub . Cualquier número de instrucciones Exit Sub puede aparecer en
cualquier parte de un procedimiento Sub .

Al igual que un procedimiento Function , un procedimiento Sub es un procedimiento


independiente que puede tomar argumentos, realizar una serie de declaraciones y
cambiar el valor de sus argumentos. Sin embargo, a diferencia de un
procedimiento Function , que devuelve un valor, un procedimiento Sub no se puede usar
en una expresión.

Se llama a un procedimiento Sub utilizando el nombre del procedimiento seguido de la


lista de argumentos. Consulte la instrucción Call para obtener información específica
sobre cómo llamar a procedimientos Sub .

Las variables utilizadas en los procedimientos Sub se dividen en dos categorías: las que se
declaran explícitamente dentro del procedimiento y las que no. Las variables que se
declaran explícitamente en un procedimiento (usando Dim o el equivalente) siempre son
locales para el procedimiento. Las variables que se usan pero no se declaran
explícitamente en un procedimiento también son locales a menos que se declaren
explícitamente en algún nivel superior fuera del procedimiento.

Un procedimiento puede usar una variable que no está explícitamente declarada en el


procedimiento, pero puede ocurrir un conflicto de nombres si algo que definió en el nivel
del módulo tiene el mismo nombre. Si su procedimiento hace referencia a una variable no
declarada que tiene el mismo nombre que otro procedimiento, constante o variable, se
supone que su procedimiento hace referencia a ese nombre de nivel de módulo. Para
evitar este tipo de conflicto, declare explícitamente las variables. Use una
instrucción Option Explicit para forzar la declaración explícita de variables.

Ejemplo

Este ejemplo utiliza la instrucción Sub para definir el nombre, los argumentos y el código
que forman el cuerpo de un procedimiento Sub .

' Sub procedure definition.


' Sub procedure with two arguments.
Sub SubComputeArea(Length, TheWidth)

Dim Area As Double ' Declare local variable.

If Length = 0 Or TheWidth = 0 Then


' If either argument = 0.
Exit Sub ' Exit Sub immediately.
End If

Area = Length * TheWidth ' Calculate area of rectangle.


Debug.Print Area ' Print Area to Debug window.

End Sub

 ThisWorkbook

Devuelve un objeto Workbook que representa el libro donde se ejecuta el código de


macro actual. Solo lectura.
Sintaxis

expresión _ Este libro de trabajo

expresión Una variable que representa un objeto Aplicación .

Observaciones

Utilice esta propiedad para hacer referencia al libro de trabajo que contiene su código de
macro. ThisWorkbook es la única manera de hacer referencia a un libro de trabajo de
complemento desde dentro del propio complemento. La propiedad ActiveWorkbook no
devuelve el libro de trabajo del complemento; devuelve el libro de trabajo que llama al
complemento.

La propiedad Workbooks puede fallar, ya que el nombre del libro probablemente cambió
cuando creó el complemento. ThisWorkbook siempre devuelve el libro de trabajo en el
que se ejecuta el código.

Por ejemplo, use un código como el siguiente para activar una hoja de diálogo almacenada
en su libro de complemento:

ThisWorkbook.DialogSheets(1).Show

Esta propiedad solo se puede usar desde dentro de Microsoft Excel. No puede usarlo para
acceder a un libro de trabajo desde ninguna otra aplicación.

Ejemplo

Este ejemplo cierra el libro que contiene el código de ejemplo. Los cambios en el libro de
trabajo, si los hay, no se guardan.

ThisWorkbook.Close SaveChanges:=False
 VBA.IsNumeric (variable o celda)

Devuelve un valor booleano que indica si una expresión se puede evaluar como un
número.

Sintaxis

IsNumeric ( expresión )

El argumento de expresión requerido es una variante que contiene una expresión


numérica o una expresión de cadena .

Observaciones

IsNumeric devuelve True si la expresión completa se reconoce como un número; de lo


contrario, devuelve False .

IsNumeric devuelve False si expresión es una expresión de fecha .

Ejemplo

Este ejemplo usa la función IsNumeric para determinar si una variable se puede evaluar
como un número.

Dim MyVar, MyCheck

MyVar = "53" ' Assign value.

MyCheck = IsNumeric(MyVar) ' Returns True.

MyVar = "459.95" ' Assign value.

MyCheck = IsNumeric(MyVar) ' Returns True.

MyVar = "45 Help" ' Assign value.

MyCheck = IsNumeric(MyVar) ' Returns False.


 With-End With

Ejecuta una serie de declaraciones que se refieren repetidamente a un solo objeto o


estructura para que las declaraciones puedan usar una sintaxis simplificada al acceder a
los miembros del objeto o estructura. Al usar una estructura, solo puede leer los valores
de los miembros o invocar métodos, y obtiene un error si intenta asignar valores a los
miembros de una estructura utilizada en una With...End Withinstrucción.

With objectExpression

[ statements ]

End With

Partes

PARTES

Término Definición
objectExpression Requerido. Una expresión que se evalúa como un objeto. La expresión puede ser
arbitrariamente compleja y se evalúa solo una vez. La expresión puede evaluar
cualquier tipo de datos, incluidos los tipos elementales.
statements Opcional. Una o más declaraciones entre Withy End Withque pueden hacer referencia
a miembros de un objeto producido por la evaluación de objectExpression.
End With Requerido. Termina la definición del Withbloque.

Observaciones

Al usar With...End With, puede realizar una serie de declaraciones en un objeto específico sin
especificar el nombre del objeto varias veces. Dentro de un Withbloque de instrucción,
puede especificar un miembro del objeto que comience con un punto, como si
el Withobjeto de instrucción lo precediera.
Por ejemplo, para cambiar varias propiedades en un solo objeto, coloque las declaraciones
de asignación de propiedades dentro del With...End Withbloque, haciendo referencia al
objeto solo una vez en lugar de una vez para cada asignación de propiedad.

Si su código accede al mismo objeto en varias declaraciones, obtiene los siguientes


beneficios al usar la Withdeclaración:

 No necesita evaluar una expresión compleja varias veces ni asignar el resultado a


una variable temporal para hacer referencia a sus miembros varias veces.
 Hace que su código sea más legible al eliminar las expresiones de calificación
repetitivas.

El tipo de datos de objectExpressionpuede ser cualquier clase o tipo de estructura o incluso


un tipo elemental de Visual Basic como Integer. Si objectExpressionda como resultado algo
que no sea un objeto, solo puede leer los valores de sus miembros o invocar métodos, y
obtiene un error si intenta asignar valores a los miembros de una estructura utilizada en
una With...End Withinstrucción. Este es el mismo error que obtendría si invocara un método
que devolviera una estructura e inmediatamente accediera y asignara un valor a un
miembro del resultado de la función, como GetAPoint().x = 1. El problema en ambos casos es
que la estructura existe solo en la pila de llamadas, y no hay forma de que un miembro de
estructura modificado en estas situaciones pueda escribir en una ubicación tal que
cualquier otro código en el programa pueda observar el cambio.

El objectExpressionse evalúa una vez, al entrar en el bloque. No puede reasignar


el objectExpressiondesde dentro del Withbloque.

Dentro de un Withbloque, puede acceder a los métodos y propiedades solo del objeto
especificado sin calificarlos. Puede usar métodos y propiedades de otros objetos, pero
debe calificarlos con sus nombres de objeto.

Puede colocar una With...End Withafirmación dentro de otra. Las declaraciones


anidadas With...End Withpueden ser confusas si los objetos a los que se hace referencia no
están claros en el contexto. Debe proporcionar una referencia completa a un objeto que
se encuentra en un bloque externo cuando se hace referencia al objeto desde
un bloque Withinterno .With

No puede bifurcarse en un Withbloque de declaraciones desde fuera del bloque.

A menos que el bloque contenga un bucle, las declaraciones se ejecutan solo una
vez. Puede anidar diferentes tipos de estructuras de control. Para obtener más
información, consulte Estructuras de control anidadas .

Ejemplo 1

En el siguiente ejemplo, cada Withbloque ejecuta una serie de declaraciones en un solo


objeto.

Private Sub AddCustomer()


Dim theCustomer As New Customer

With theCustomer
.Name = "Coho Vineyard"
.URL = "http://www.cohovineyard.com/"
.City = "Redmond"
End With

With theCustomer.Comments
.Add("First comment.")
.Add("Second comment.")
End With
End Sub

Public Class Customer


Public Property Name As String
Public Property City As String
Public Property URL As String

Public Property Comments As New List(Of String)


End Class
 Worksheets

Para un objeto Aplicación , devuelve una colección de Hojas que representa todas las
hojas de cálculo del libro activo.

Para un objeto Libro de trabajo , devuelve una colección de Hojas que representa todas
las hojas de trabajo del libro de trabajo especificado.

Objeto Hojas de solo lectura .

Sintaxis

expresión _ Hojas de trabajo

expresión Una variable que representa un objeto Aplicación .

Observaciones

El uso de esta propiedad sin un calificador de objeto devuelve todas las hojas de cálculo
del libro de trabajo activo.

Esta propiedad no devuelve hojas de macros; use la propiedad Excel4MacroSheets o la


propiedad Excel4IntlMacroSheets para devolver esas hojas.

Ejemplo

Este ejemplo muestra el valor en la celda A1 en Sheet1 en el libro activo.

MsgBox Worksheets("Sheet1").Range("A1").Value

Este ejemplo muestra el nombre de cada hoja de trabajo en el libro de trabajo activo.

También podría gustarte