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

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

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