domingo, 26 de octubre de 2008

Trabajar con userform 0.1






Trabajar con UserForm 0.1
-------------------------
Mediante los userform podremos crear los cuadro de dialogo personalizados.

1) Active el editor (ALT+F11)

Ahora presione el boton insertar userform



o tambien ...

Pude dar click derecho en algun objeto de su proyecto como (Thisworkbook o alguna hoja)



*ya creado nuestro formulario podemos realizarle una serie de personalizaciones deacuerdo al gusto o

conveniencia.

Normalmente deseara cambiarle el nombre para identificarlo de manera más simple..

Para acceder a las propiedades para este objeto seleccione el useform en su proyecto y presione "F4"
ahora podemos manipular las propiedades.

cambie el nombre por el sgte Usf_example1
en la propiedad Backcolor despliegue las opciones y elija un color.

otro de los detalles iniciales seria la forma de ocultar o mostrar el formulario

Ahora inserte un modulo y coloque el sgte codigo

Sub call_form()

Usf_example1.Show 'mostrar el formulario

End Sub


De igual manera puede ocultar o descargar el formulario de la sgte forma

'Unload Me 'descargar ..use unload me ...si el codigo esta dentro del formulario

*ahora cierra su formulario y vaya al editor de codigo

Para este ejemplo primero cambie la propiedad ShowModal a False y corra la sgte macro linea por linea (presione F8 estando con el cursor sobre la macro call_form1)

Sub call_form1()

Usf_example1.Show 'mostrar form

Usf_example1.Hide 'ocultar

Usf_example1.Show 'mostrar

Unload Usf_example1 'descargar el form .desde un modulo

End Sub

domingo, 14 de septiembre de 2008

Metodo GetSaveAsFileName de Excel

El metodo GetSaveAsFileName de Excel

* Despliega el cuadro de dialogo guardar como y permite la seleccion de un archivo

* Devuelve un nombre de archivo y ruta ,pero no inicia ninguna acción .

Sintaxis

Nombre inicial de archivo :Opcional(especifica el nombre del archivo)

Filtro de archivo :Opcional. una cadena especificando el criterio de filtro archivo

Filterindex Opcional .Los numeros del indice por defecto

Titulo .Opcional .El titulo del cuadro de dialogo

ButtonText .Solo para macintosh


Ejemplo de empleo del metodo GetSaveAsFileName de Excel



Sub GetSaveasFilename()

Dim fileSaveName As String


fileSaveName = Application.GetSaveasFilename(fileFilter:="Excel Files (*.xls), *.xls")

If fileSaveName <> False Then

ActiveWorkbook.SaveAs (fileSaveName)

MsgBox "El libro se guardo en :" & fileSaveName

End If



End Sub

Msgbox

'MsgBox II

'En ocasiones sera necesario forzar rotura de lineas en los mensajes que muestre

'El sgte es un ejemplo de esta situación.


Sub msgboxII()


Dim msg As String
Dim rpt As Byte


msg = "Usted debe asegurarse siempre " & vbCrLf
msg = msg & "de evitar que los usuarios manipulen " & vbCrLf
msg = msg & "Información de otras areas ¿Esta cumpliendo con esa tarea ?"

rpt = MsgBox(msg, vbYesNo + vbQuestion)

If rpt = vbYes Then

MsgBox "Realice las sgtes tareas"

Else

MsgBox "Revise nuevamente"

End If


End Sub

domingo, 24 de agosto de 2008

GETOPENFILENAME(Metodo GetOpenfilename De EXCEL)



'Metodo GetOpenfilename De EXCEL
'------------------------------
'Este metodo nos permite desplegar el cuadro de dialogo abrir (del menu archivo) pero no abre el archivo indicado.
'*El metodo nos devuelve uan cadena con la ruta y nombre del archivo seleccionado.

'Sintaxis
'--------
'Object.GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,Multiselect)

'FileFilter> Opcional.Una serie especifica con criterios de filtro de archivo.

'FilterIndex> Opcional.Los numeros del indice por defecto bajo criterios de filtro de archivo.

'Titulo > Opcional .El titulo del cuadro de dialogo.si se omite,el titulo.. mostrara "Abrir"

'ButtonText>Solo para Macintosh

'Multiselect >Opcional . Si es verdadero,se pueden seleccionar varios nombres de archivos

'El argumento Filtro de archivo determinalo que muestra el cuadro de dialogo de los archivos del tipo lista desplegable.

'*Consiste en pares de series de filtro de archivo seguido del comodin especificado.

'*Si se omite sera por defecto : "All File(*.*),*.*"

'Ejemplo
'-------

'El argumento Filterindex especificara el tipo de archivo que aparece por defecto,
'el titulo del argumento es un texto que se despliega en la barra del titulo.
'
'*si el argumento de multiselect es verdadero,el usuario puede seleccionar varios archivos(y se devolveran en una serie)

Sub abreArchivo()

Dim filtrox As String
Dim FilterIndex As Integer
Dim titulo As String
Dim nombreArchivo As Variant

'Configurar Filtro para la lista de archivos

filtrox = "Archivos de texto (*.txt),*.txt," & _
"Word(*.doc),*.doc, " & _
"Excel (*.xls), *.xls, " & _
"Power Point(*.ppt), *.ppt, " & _
"Todos los archivos (*.*),*.* "


'Mostrar por defecto todos los archivos
FiltroIndex = 3
titulo = "Ejemplo"

'Obtener Nombre del archivo
nombreArchivo = Application.GetOpenFilename(FileFilter:=filtrox, FilterIndex:=FiltroIndex, Title:=titulo)

End Sub

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)