domingo, 13 de julio de 2008

La función MSGBOX

La funcion MsgBox

Creo que ya empleamos en algunos ejemplos esta función ...pero es mejor que sobre conocimientos a que falte.

Esta funcion nos mostrara un cuadro de dialogo con el que el usuario podra interactuar.

La sintaxis consta de 5 argumentos

Ejemplo
-------

Msgbox (prompt [,buttons] [,title] [helpfile,context])

*los argumentos entre corchete son opcionales

-prompt :El mensaje desplegado instantaneamente en el cuadro.

-Buttons :Indicaremos que botones e iconos aparecen.

-Title :Por defecto aparecera Excel en el caso no indiquemos alguno.

-Helpfile:El nombre de la fila de ayuda asociado con el cuadro de dialogo

-Context :Representa un topico de ayuda


'--------------------------------

Sub ejemplo_msgboxvba()


MsgBox "!Accion no permitida!...", vbCritical, "Precaución"

res = MsgBox("¿Deseas Continuar?", _
vbYesNo + vbQuestion, "Lista de precios")

End Sub

*Si la respuesta es afirmativa el valor de la variable res sera 6
en el caso contrario sera 7

domingo, 22 de junio de 2008

InputBox(cuadro de entrada)



'Cuadro de dialogo de entrada

'
'Nos permitira ingresar un texto,numero o rango
'
'Sintaxis para funcion InputBox de VBA
'
'
'InputBox([prompt],[Title],[Default],{xpos],[ypos],[help file,context])
'
'Prompt : Es el texto mostrado en el cuadro de dialogo
'
'Title :(opcional)Texto de titulo para el cuadro de dialogo
'
'Default :Valor por defecto mostrado en el cuadro de dialogo
'
'Xpos,Ypos :La patalla se ubicar segun las cordenadas
'
'Helpfile ,context (opcional).el archivo de ayuda
'
'Type :Opcional.El tipo de dato devuelto como se ve en la siguiente tabla.
'
'codigo --> SIGNIFICADO
'------
'0 -----> Una fórmula
'1 -----> Un numero
'2 -----> Una cadena(texto)
'4 -----> Un valor logico(True o False)
'8 -----> Una celda de referencia ,como un objeto de rango
'16 -----> Un error de valor,como #N/A


Sub nombres()

Dim i As String
Dim a As Integer


Range("A1:A20").Select 'selecccionamos rango de trabajo

For a = 0 To Selection.Cells.Count 'relizar repeticiones para cada una de las celdas

i = (InputBox("Ingrese su nombre", "Nombre")) 'recuperamos ldsa cadena del input box

ActiveCell.Offset(a, 0).Value = i 'bajamos por las celdas de la seleccion de 1 en 1

Next a

End Sub


Sub beneficio()

Dim u As Long

Do

u = Val(InputBox("Ingrese beneficio", "Beneficio logrado"), "x") 'recuperar beneficio


Loop While u > 0 'CONTINUAR MIENTRAS > 0



End Sub

sábado, 17 de mayo de 2008

Arrays

Arrays Dinámicos

Lo emplearemos Cuando el numero de elementos para una dimensión del array no sean las mismas.

Dim ArrayDinamic() 'dejamos vacios los parentesis


Sub recontar_items


ReDim Array(a) 'para asignar el espacio al array


Array(a) =34 *pero ojo que los valores no se mantendran


'si deseamos conservar los valores emplaremos

redim preserve nombrearray(numero)=valor

Redim preserve Array(a)=34 'conservamos los valores


End sub

La sentencia ReDim permite cambiar el número de elementos del array, no el número de dimensiones.

Por ejemplo, si declaramos el array_A a nivel de un módulo.


Private Array_A() as Integer

Para asignarle espacio al array utilizamos:

ReDim Array_A(5)

Cada vez que se ejecuta la sentencia ReDim, todos los valores almacenados en el array se pierden. Cuando le interese cambiar el tamaño del array conservando los valores del array,

use ReDim con la palabra clave Preserve.

Por ejemplo

ReDim Preserve Array_A(8)

Arrays

Ejemplo Array multidimensional

2 dimensiones

ReDim Arrjugadores(0 to 1, 0 to 11) As String

'Mejores futobolistas Europa

Arrjugadores(0, 0) = "Zinedine Zidane "
Arrjugadores(0, 1) = "Henry"
Arrjugadores(0, 2) = "Owen"
Arrjugadores(0, 3) = "Raul"
Arrjugadores(0, 4) = "Ruud van Nistelrooy"
Arrjugadores(0, 5) = "Shevchenko"
Arrjugadores(0, 6) = "Lilian Thuram"
Arrjugadores(0, 7) = "Nesta"
Arrjugadores(0, 8) = "Davor Zucker"
Arrjugadores(0, 9) = "Bergkamp"
Arrjugadores(0, 10) = "Figo"
Arrjugadores(0, 11) = "Cristiano Ronaldo"




'Mejores futobolistas America

Arrjugadores(1, 0) = "Ronaldo"
Arrjugadores(1, 1) = "Batistuta"
Arrjugadores(1, 2) = "Enzo Franchescoli"
Arrjugadores(1, 3) = "Romario"
Arrjugadores(1, 4) = "Ortega"
Arrjugadores(1, 5) = "Ronaldinho"
Arrjugadores(1, 6) = "Roberto carlos"
Arrjugadores(1, 7) = "Emerson"
Arrjugadores(1, 8) = "KaKa"
Arrjugadores(1, 9) = "Rivaldo"
Arrjugadores(1, 10) = "Adriano"
Arrjugadores(1, 11) = "Gamarra"


*Para borrar los elementos del array

erase Arrjugadores

domingo, 11 de mayo de 2008

Arrays

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).

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

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