Arrays
Mediante un array podemos refererirnos a una "serie de elementos" por un "mismo nombre" y referenciara un elemento de la serie por un numero de indice.
ArraySuperClubes(1)="Real Madrid"
ArraySuperClubes(2)="Barcelona"
ArraySuperClubes(3)="Milan"
ArraySuperClubes(4)="Inter de Milan"
ArraySuperClubes(5)="Manchester United"
En este ejemplo lo comprobaremos con mayor claridad
1) Nos referimos a una serie de elementos por un mismo nombre en este caso sera ArraySuperClubes.
Por ejemplo bastaria algo como la sgte instruccion para cargar los elementos de nuestro array en un control listbox1
ArraySuperClubes representa a los 5 elementos de nuestro array
listbox1.list=ArraySuperClubes
2) Referenciamos a un elemento de la serie por un numero de indice.
Por ejemplo
Si quisieramos referenciar al elemento "3" de nuestro ArraySuperClubes()
Msgbox ArraySuperClubes(3)
nota:Al igual que con la declaración de variables debemos tener en cuenta
Arrays de variables (estático)
Significa que nuestro array tendra un numero fijo de elementos
Aqui es importante tener en cuenta el ambito de declaración del array tal y como
se hace con las variables de manera cotidiana.
-Es decir a nivel de procedimiento , modulo o pubico (disponible para todo el proyecto)
Ejemplos:
Dim Array_Spain(20) as string
'se declaro un array de 21 elementos que van desde el indice cero..
Array_Spain(0),
Array_Spain(1),
Array_Spain(21)
Dim ArrayBidimensionalXy(1 to 4,1 to 4)as integer
'se declaro array de 2 dimensiones
ArrayBidimensional, con 4*4 elementos ArrayBidimensional(1,1)...ArrayBidimensional(4,4)
Public New_X(1 To 20) As String *20
Public New_X(1)...Public New_X(20),
cada elemento permite almacenar una cadena de (20 caracteres).
Excel VBA Code/Excel Macros / Complementos para Excel/vba macros/vba samples Excel Macros/Excel VBA/Excel Add-ins /Microsoft Excel/Spreadsheet Tools/Charts
domingo, 11 de mayo de 2008
Arrays
Etiquetas:
ARRAYS EJEMPLOS,
ARRAYS ESTATICOS,
Arrays VBA EXCEL,
buvles for next vba excel vba bucles excel,
EXCEL VB CODE,
MACROS VBA EJEMPLO ARRAY,
vba,
VBA CODE EJEMPLO,
VBA EXCEL ARRAYS
domingo, 20 de abril de 2008
For Each ..Next
La instruccion For Each..Next repite instrucciones para cada uno de los objetos de una colección
determinada.
Modificaremos un poco un ejemplo visto anteriormente sobre los colores del libro para
obtener el mismo resultado.
Pero esta vez haremos referencia a colecciones de objetos.
Sub obtener_los_56_colores()
'aqui es conocido que El Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim rango_a_pintar As Range
Dim celda As Range
Dim a As Byte
Set rango_a_pintar = Range("A1:A56") 'asignamos el rango que necesitamos
For Each celda In rango_a_pintar 'repetir en cada uno de los elementos de la coleccion
a = a + 1
celda.Interior.ColorIndex = a 'asignar colores del libro a respectiva celda
Next celda
End Sub
determinada.
Modificaremos un poco un ejemplo visto anteriormente sobre los colores del libro para
obtener el mismo resultado.
Pero esta vez haremos referencia a colecciones de objetos.
Sub obtener_los_56_colores()
'aqui es conocido que El Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim rango_a_pintar As Range
Dim celda As Range
Dim a As Byte
Set rango_a_pintar = Range("A1:A56") 'asignamos el rango que necesitamos
For Each celda In rango_a_pintar 'repetir en cada uno de los elementos de la coleccion
a = a + 1
celda.Interior.ColorIndex = a 'asignar colores del libro a respectiva celda
Next celda
End Sub
Estructuras de Repeticion (Bucles For ..Next )
Las estructuras For...Next las emplearemos en los casos cuando s conocemos el numero de veces que es necesario repetir la ejecuion de determinadas instrucciones
Sub obtener_los_56_colores()
'aqui es conocido que Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim a As Byte
Range("A1:A56").Select
For a = 1 To 56 'repetir 56 veces
Selection.Cells(a).Interior.color = ActiveWorkbook.Colors(a)
'asignar colores del libro a la respectiva celda
Next a
End Sub
Sub obtener_los_56_colores()
'aqui es conocido que Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim a As Byte
Range("A1:A56").Select
For a = 1 To 56 'repetir 56 veces
Selection.Cells(a).Interior.color = ActiveWorkbook.Colors(a)
'asignar colores del libro a la respectiva celda
Next a
End Sub
Estructuras de Repetición
Las estructuras de repeticion son usadas para ejecutar una o mas instrucciones repetidas veces
Do...Loop
---------
Nos permitira ejecutar un bloque de instrucciones durante un numero indefinido de veces
*Pero mientras una condición sea (TRUE)Verdadera o hasta que llegue hacer verdadera.
El sgte es un ejemplo de una macro que comprueba la condicion sea true al inicio para poder continuar con las repeticiones
'primero ingresa valores en una columna ...por ejemplo de A1 a A5
'ahora colocate sobre la celda A1
Sub EJEMPLO_DO_LOOP() 'verificar condicion al inicio
'esta macro suma el valor de la variable "I"
'al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera'
y continua entonces la ejecucion del bucle
Dim I As Integer
Do While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion "no 'sea vacio
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop
End Sub
Sub EJEMPLO_DO_LOOP1() 'verificar al final
'esta macro suma el valor de la variable "I" al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera pero al final es decir
'despues de haber ejecutado la menos una vez el bucle
Dim I As Integer
Do
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion
'no sea vacio
End Sub
Do...Loop
---------
Nos permitira ejecutar un bloque de instrucciones durante un numero indefinido de veces
*Pero mientras una condición sea (TRUE)Verdadera o hasta que llegue hacer verdadera.
El sgte es un ejemplo de una macro que comprueba la condicion sea true al inicio para poder continuar con las repeticiones
'primero ingresa valores en una columna ...por ejemplo de A1 a A5
'ahora colocate sobre la celda A1
Sub EJEMPLO_DO_LOOP() 'verificar condicion al inicio
'esta macro suma el valor de la variable "I"
'al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera'
y continua entonces la ejecucion del bucle
Dim I As Integer
Do While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion "no 'sea vacio
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop
End Sub
Sub EJEMPLO_DO_LOOP1() 'verificar al final
'esta macro suma el valor de la variable "I" al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera pero al final es decir
'despues de haber ejecutado la menos una vez el bucle
Dim I As Integer
Do
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion
'no sea vacio
End Sub
Etiquetas:
do loop,
do while verdero,
loop,
Repeticiones Vba Bucles Do while true,
repetir instrucciones,
while
jueves, 20 de marzo de 2008
Select Case
Tenemos la posibilidad de emplear alternativamente la instrucciones SELECT CASE por los bloques "IF...THEN..ENDIF" .
Sub cases()
Dim ventas As Integer
Dim totales As Integer
ventas = 50
Select Case ventas 'casos para ventas
Case Is = 30 'si es 30
totales = 30 * 12 'calcular
Case Is = 40 'si es 40
totales = 40 * 13 'calcular
Case Is = 50 'si es 50
totales = 50 * 14 'calcular
Case Else 'caso contrario
totales = 60 * 25 'calcular
End Select
MsgBox totales 'mostrar totales
End Sub
Sub cases()
Dim ventas As Integer
Dim totales As Integer
ventas = 50
Select Case ventas 'casos para ventas
Case Is = 30 'si es 30
totales = 30 * 12 'calcular
Case Is = 40 'si es 40
totales = 40 * 13 'calcular
Case Is = 50 'si es 50
totales = 50 * 14 'calcular
Case Else 'caso contrario
totales = 60 * 25 'calcular
End Select
MsgBox totales 'mostrar totales
End Sub
Estructuras de Control ( [ IF..End if] - [ Select case..End Select]
Vba nos permite emplear varias estructuras de control y asi podemos escribir codigo que tome decisiones y repita algunas acciones
IF..Then:
La emplearemos para ejecutar instrucciones dependiendo del valor de una condición.
Sintaxis de una sola linea(ejecuta una instruccion si la condicion es true
---------------------------------------------------------------------------------
'si la celda activa es 500 ..entonces la celda activa sera ahora ..500+100
if activecell.value=500 then activecell.value=500+100
Sintaxis de varias lineas(ejecutara varias instrucciones si la condicion es
-----------------------------------------------------------------------------------
true)
------
Sub test()
If ActiveCell.Value = 600 Then
MsgBox "la celda tiene el valor de 600" 'instruccion1
ActiveCell.Interior.ColorIndex = 3 'instruccion 2
End If
End Sub
IF ..Then..Else
-----------------
Esta estructura Ejecutara determinadas instrucciones si la condicion es TRUE
y otras si la condicion es FALSE
*Ejemplo para 2 posibilidades
IF activecell.value=600 then 'si es 600 then
activecell.value=700 'cambiar por 700
Else 'caso contrario
activecell.value=0 'cambiar por cero
End if
*Ejemplo para varias posibilidades
Sub variosIF()
If ActiveCell.Value = 800 Then 'condicion1
MsgBox "la celda tiene 800 como valor"
ActiveCell.Interior.ColorIndex = 4
ElseIf ActiveCell.Value = 900 Then 'condicion2
MsgBox "la celda tiene 900 como valor"
ActiveCell.Interior.ColorIndex = 5
ElseIf ActiveCell.Value = 910 Then 'condicion3
MsgBox "la celda tiene 910 como valor"
ActiveCell.Interior.ColorIndex = 6
Else 'en el caso no cumpla con las codiciones anteriores
MsgBox "la celda es diferente de 800,900,910 o tal vez esta vacia"
End If
End Sub
IF..Then:
La emplearemos para ejecutar instrucciones dependiendo del valor de una condición.
Sintaxis de una sola linea(ejecuta una instruccion si la condicion es true
---------------------------------------------------------------------------------
'si la celda activa es 500 ..entonces la celda activa sera ahora ..500+100
if activecell.value=500 then activecell.value=500+100
Sintaxis de varias lineas(ejecutara varias instrucciones si la condicion es
-----------------------------------------------------------------------------------
true)
------
Sub test()
If ActiveCell.Value = 600 Then
MsgBox "la celda tiene el valor de 600" 'instruccion1
ActiveCell.Interior.ColorIndex = 3 'instruccion 2
End If
End Sub
IF ..Then..Else
-----------------
Esta estructura Ejecutara determinadas instrucciones si la condicion es TRUE
y otras si la condicion es FALSE
*Ejemplo para 2 posibilidades
IF activecell.value=600 then 'si es 600 then
activecell.value=700 'cambiar por 700
Else 'caso contrario
activecell.value=0 'cambiar por cero
End if
*Ejemplo para varias posibilidades
Sub variosIF()
If ActiveCell.Value = 800 Then 'condicion1
MsgBox "la celda tiene 800 como valor"
ActiveCell.Interior.ColorIndex = 4
ElseIf ActiveCell.Value = 900 Then 'condicion2
MsgBox "la celda tiene 900 como valor"
ActiveCell.Interior.ColorIndex = 5
ElseIf ActiveCell.Value = 910 Then 'condicion3
MsgBox "la celda tiene 910 como valor"
ActiveCell.Interior.ColorIndex = 6
Else 'en el caso no cumpla con las codiciones anteriores
MsgBox "la celda es diferente de 800,900,910 o tal vez esta vacia"
End If
End Sub
lunes, 3 de marzo de 2008
Bug en Excel 2007
En Excel 2007 algunas operaciones, en las que el resultado debería ser
normalmente 65535 se muestra con el número 100000 como resulatdo . Esto es un problema serio y podría afectar a todos los cálculos posteriores que se hagan con ese valor.
Excel 2007
Excel 2003
Pero ya tendria solucion
------------------------------
Solo visiten este enlace y decarguen el parche correspondiente:
http://blogs.msdn.com/excel/archive/2007/10/09/calculation-issue-update-fix-available.aspx
normalmente 65535 se muestra con el número 100000 como resulatdo . Esto es un problema serio y podría afectar a todos los cálculos posteriores que se hagan con ese valor.
Excel 2007Pero ya tendria solucion
------------------------------
Solo visiten este enlace y decarguen el parche correspondiente:
http://blogs.msdn.com/excel/archive/2007/10/09/calculation-issue-update-fix-available.aspx
Etiquetas:
Bug excel,
correccion bug de excel,
Excel 2007,
parche excel 2007
Suscribirse a:
Entradas (Atom)
