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
Excel VBA Code/Excel Macros / Complementos para Excel/vba macros/vba samples Excel Macros/Excel VBA/Excel Add-ins /Microsoft Excel/Spreadsheet Tools/Charts
jueves, 20 de marzo de 2008
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
domingo, 24 de febrero de 2008
Funciones Definidas por el usuario
Funciones definidas por el usuario
----------------------------------------
*una funcion acepta valores luego
realizara los calculos y nos devolvera
una respuesta.
1.creamos unha function con el nombre doble
Function doble(numero)'el argumento pasado se llama numero
doble= numero*numero 'la function nos devuelve numero*numero
end function
2.Ahora vamos al excel y en la formula para una celda
cualquiera escribimos
=Doble(3)
*listo la celda debe devolver como valor 9
----------------------------------------
*una funcion acepta valores luego
realizara los calculos y nos devolvera
una respuesta.
1.creamos unha function con el nombre doble
Function doble(numero)'el argumento pasado se llama numero
doble= numero*numero 'la function nos devuelve numero*numero
end function
2.Ahora vamos al excel y en la formula para una celda
cualquiera escribimos
=Doble(3)
*listo la celda debe devolver como valor 9
sábado, 16 de febrero de 2008
Pasando datos a procedimientos
En VBA Tenemos siempre la posibiliodad de llamar a otro procedimiento
para pasarle datos o variables.
Por ejemplo
-----------
En este sencilo ejemplo se ve claramente como pasar un dato a otro procediento
'solo debes pegar el codigo en modulo
'y correrlo
Sub pasando_un_dato()
Dim celda As Range
Set celda = Range("A1") 'asignamos la refrencia la celda A1
celda.Value = 399 * 2 'colocamos un valor a la celda
'invocamos al procedimiento:
'calculador_datos(y le pasamos
'el valor de la propiedad value de la celda)
calculador_datos (celda.Value )
End Sub
Sub calculador_datos(valor)
'el procedimiento recibe el valor de celda.value
Dim total As Integer
total = 12 * valor 'la variable total ahora sera igual a 12* valor(celda.value)
MsgBox "el total es..." & total 'mostramos el resultado
End Sub
para pasarle datos o variables.
Por ejemplo
-----------
En este sencilo ejemplo se ve claramente como pasar un dato a otro procediento
'solo debes pegar el codigo en modulo
'y correrlo
Sub pasando_un_dato()
Dim celda As Range
Set celda = Range("A1") 'asignamos la refrencia la celda A1
celda.Value = 399 * 2 'colocamos un valor a la celda
'invocamos al procedimiento:
'calculador_datos(y le pasamos
'el valor de la propiedad value de la celda)
calculador_datos (celda.Value )
End Sub
Sub calculador_datos(valor)
'el procedimiento recibe el valor de celda.value
Dim total As Integer
total = 12 * valor 'la variable total ahora sera igual a 12* valor(celda.value)
MsgBox "el total es..." & total 'mostramos el resultado
End Sub
viernes, 8 de febrero de 2008
Invocar a una macro (procedimiento)
Esn este ejemplo el procedimiento "Sub Principal" llama al procedimdiento "Sub auxiliar"
para que nos muestre un msgbox (un mensaje)
'--------------------------------------------------------------------------------------------------
'declaramos la varible rango de tipo range
'la declaramos a nivel de modulo(disponible
'para los procedimientos de este modulo)
Dim rango As Range
Sub principal()
'ahora asiganmos el rango
'asignamos el rango "B10 a B20" a la variable de tipo rango
Set rango = Range("B10:B20")
'ahora hacemos referencia al objeto rango para pintar sus celdas
rango.Interior.ColorIndex = 3
auxiliar 'invocando a la macro auxiliar
End Sub
Sub auxiliar()
MsgBox "Las celdas del rango : " & rango.Address & " han sido pintadas"
End Sub
para que nos muestre un msgbox (un mensaje)
'--------------------------------------------------------------------------------------------------
'declaramos la varible rango de tipo range
'la declaramos a nivel de modulo(disponible
'para los procedimientos de este modulo)
Dim rango As Range
Sub principal()
'ahora asiganmos el rango
'asignamos el rango "B10 a B20" a la variable de tipo rango
Set rango = Range("B10:B20")
'ahora hacemos referencia al objeto rango para pintar sus celdas
rango.Interior.ColorIndex = 3
auxiliar 'invocando a la macro auxiliar
End Sub
Sub auxiliar()
MsgBox "Las celdas del rango : " & rango.Address & " han sido pintadas"
End Sub
Etiquetas:
excel vba llamando macros,
excel vba llamando procedimientos,
invocar procedimientos o macros,
llamando un amacro desde otra macro,
Llamar procedimientos,
macros
viernes, 1 de febrero de 2008
Uso de Variables VBA EXCEL - Macros VBA EXCEL
Variables
----------
Se emplean para "GUARDAR" y "MANIPULAR VALORES ó DATOS "
Se pueden guardar varios tipos de datos
----------------------------------------
-numericos ---> Myvarnum=5000 'guardando el dato numerico "5000" en "Myvarnum"
-cadenas ---->Myvarcadena="Libro39" 'guardando la cadena "Libro39" en Myvarcadena
-objetos -----> set wbk=Activeworkbook ''asig¡nando el libro activo a la variable de tipo objeto "wbk"
-variantes ----->myvar=5000 , myvar="XXX" , set myvar=Activeworkbook
'y en las varables de tipo variant uno podra almacenar un dato de diferentes tipos.
Las varibles se declaran de la sgte manera
-------------------------------------------
Dim var_ejemplo as string
Dim : Indica la declaración d ela variable
var_ejemplo :nombre de la variable
As : cualificativo para separar el "nombre de la varible" del "tipo de dato"
String : El tipo de dato (puede ser string ,integer, object , variant ,etc,etc)
Dim Myvarnum as integer 'tipo..numerico
Dim Myvarcadena as string 'tipo...cadena
Dim wbk as object 'tipo...objeto
Dim myvar as variant 'tipo...variant
*Varibles de objeto
---------------------
empleadas par refrenciar un objeto
*ojo para asignar un objeto a una variable uno debe asignar
de la sgte forma..primero
colocar set..luego nombre de la variable e igualr al objeto.
Set variable=Objeto
Ejemplo
--------
Dim wbk as object
-asignamos el objeto ===> el libro activo(Activeworkbook) a la variable "wbk"
set wbk=Activeworkbook
-y luego podremos por ejemplo decir
Msgbox wbk.name 'y obtendremos el nombre del libro activo
Ambito de las variables
------------------------
Se refiere al área donde se puede acceder.
'-a nivel de procedimiento
'-------------------------
Sub procedim 'las varibles solo seran acesibles dentro del procedimiento
dim paraproc as string
dim paraprox as string
paraproc="Real Madrid"
paraprox="Barcelona"
End sub
'-a nivel de modulo
'----------------------
Dim superclub as string 'accesible a todos los procedimientos del modulo
sub prueba
superclub="Manchester United"
End sub
'-a nivel de proyecto
'---------------------
Option Explicit
'al declara la variable como publica ser accesible desde todo el proyecto
Public superclub As String
Sub prueba1()
superclub = "Inter de Milan"
End Sub
----------
Se emplean para "GUARDAR" y "MANIPULAR VALORES ó DATOS "
Se pueden guardar varios tipos de datos
----------------------------------------
-numericos ---> Myvarnum=5000 'guardando el dato numerico "5000" en "Myvarnum"
-cadenas ---->Myvarcadena="Libro39" 'guardando la cadena "Libro39" en Myvarcadena
-objetos -----> set wbk=Activeworkbook ''asig¡nando el libro activo a la variable de tipo objeto "wbk"
-variantes ----->myvar=5000 , myvar="XXX" , set myvar=Activeworkbook
'y en las varables de tipo variant uno podra almacenar un dato de diferentes tipos.
Las varibles se declaran de la sgte manera
-------------------------------------------
Dim var_ejemplo as string
Dim : Indica la declaración d ela variable
var_ejemplo :nombre de la variable
As : cualificativo para separar el "nombre de la varible" del "tipo de dato"
String : El tipo de dato (puede ser string ,integer, object , variant ,etc,etc)
Dim Myvarnum as integer 'tipo..numerico
Dim Myvarcadena as string 'tipo...cadena
Dim wbk as object 'tipo...objeto
Dim myvar as variant 'tipo...variant
*Varibles de objeto
---------------------
empleadas par refrenciar un objeto
*ojo para asignar un objeto a una variable uno debe asignar
de la sgte forma..primero
colocar set..luego nombre de la variable e igualr al objeto.
Set variable=Objeto
Ejemplo
--------
Dim wbk as object
-asignamos el objeto ===> el libro activo(Activeworkbook) a la variable "wbk"
set wbk=Activeworkbook
-y luego podremos por ejemplo decir
Msgbox wbk.name 'y obtendremos el nombre del libro activo
Ambito de las variables
------------------------
Se refiere al área donde se puede acceder.
'-a nivel de procedimiento
'-------------------------
Sub procedim 'las varibles solo seran acesibles dentro del procedimiento
dim paraproc as string
dim paraprox as string
paraproc="Real Madrid"
paraprox="Barcelona"
End sub
'-a nivel de modulo
'----------------------
Dim superclub as string 'accesible a todos los procedimientos del modulo
sub prueba
superclub="Manchester United"
End sub
'-a nivel de proyecto
'---------------------
Option Explicit
'al declara la variable como publica ser accesible desde todo el proyecto
Public superclub As String
Sub prueba1()
superclub = "Inter de Milan"
End Sub
Suscribirse a:
Entradas (Atom)
