sábado, 1 de noviembre de 2008

Trabajar con userform 0.2










Trabajar con userform
---------------------


Añadir controles al formulario


Para agregar controles a su formulario empleara el cuadro de herramientas .Si el cuadro de herramientas no esta visible ,seleccione Ver , Cuadro de herramientas del menu VER

Puede agrgar su controles dando click en el control y luego arrastrando al formulario o puede dar click en el control y luego dar click en la sección del formulario donde desea insertar.

Cada vez que agregamos un control se le asigna el nombre de control mas indicador de secuencia numerica

por ejemplo cada vez que agreguemos un label..el primero sera label1..el segundo label2..etc..claro que siempre
sera posible renombrar los controles por nombres mas convenientes

Para cambiar el nombre de un contro debe seleccionar el control ... ir al ventana de propiedades y elegir la

propiedad nombre y asignar el nombre que desea.

Algunos Controles
------------------
Label(etiqueta) :Este control mostrara un texto dentro del useform

Cuadro de texto(TextBox): Permite al usuario introducir texto

Cuadro combinado(ComboBox) :permitira contener un listado de elementos pero solo mostrara uno la vez hasta ser desplegado .

Cuadro de Lista(ListBox) : Permite mostrar una lista de elementos donde le usuario puede realizar la selección de uno o varios.

Casilla de verificación(CheckBox):
Son utiles cuando el usuario necesita indicar varias opciones .La casilla de verificacion marcada tiene el valor de verdadero.

Boton de opcion(OptionButton).Se empleara cuando solo sea posible elegir uan sola opcion entre varias.
Cuando uno de los botones esta activado(valor true) el resto de botones se desactivara .

Control imagen(Image).Se emplea para mostrar una imagen desde un archivo o cargarse desde el portapapeles.

RefEdit.Le Permitira al usuario seleccionar un rango de celdas.

Para identificar los controles en el cuadro de herramientas simplemente coloquese sobre algun control y aparecera una etiqueta con el nombre del control.

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)

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

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

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

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

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

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

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

sábado, 26 de enero de 2008

Ejemplos macros vba Excel

Una pausa en el avance como
para reforzar un poquito lo avanzado.

Sub nombre_padre

'obtener el nombre del padre
'de activesheet

MsgBox ActiveSheet.Parent.FullName

End sub

'recordando el tema del modelo de objetos de Excel
'aqui un claro ejemplo de la jerarquia de objetos de
que les comente:

fijense primero nombramos al objeto "ActiveSheet" y colocamos el punto luego la palabra "Parent"(Padre)
(entiendase entonces que al decir "Activesheet.Parent"
estamos hablando del objeto inmediato superior a a la
hoja activa que seria logicamente"El libro"(ActiveWorkbook)
en este caso entonces veran que es lo mismo
colocar "ActiveSheet.Parent" o "ActiveWorkbook"
y de esa forma tambien podremos referenciar objetos haciendo referencia al objeto padre para el objeto correspondiente del modelo de objetos de Excel.

y finalmente colocamos la, propiedad "FullName"

esto nos daria exactamente el mismo resultado

sub nombre_libro

MsgBox ActiveWorkbook.FullName

end sub

-----------

obtener nombre del libro
************************

' ojo :...pero por ejemplo si el libro activo no se guardo
' ninguna vez todavia nos devolvera "Book1" o "Libro"'
dependiendo del idioma de tu Excel .

'y si tu libro ya lo habias guardado anteriormente
' devolvera ademas del nombre el "path" o ruta de
tu libro activo .

de esta manera : D:\Documents and Settings\Administrador\Escritorio\WorkPlan_jes1.xls
end sub


'Redondeando activecell
'---------------------------

Sub redondear_cells()

s = Round(ActiveCell, 2)

ActiveCell.Value = s

ActiveCell.NumberFormat = "#,##0.00"

End Sub


'Formateando(fuente)
'------------------------


Sub cambiar_formato()

Cells.Select 'seleccionamos todas las celdas
Selection.Font.Name = "Arial Black" 'asignamos la fuente
Selection.Font.Size = 13 'el tamaño de la fuente

'en el ejemplo seleccionamos todas las celdas
'pero puedes comentar la linea -->'Cells.Select'
y seleccionar cualquier rango de celdas'incluso
celdas discontinuas

End Sub


Cambiar entre estilos de referencia

de A1 a RC y viceversa

Application.ReferenceStyle = xlA1Application.ReferenceStyle = xlR1C1
Application.ReferenceStyle = xlA1

'Pegar los formatos
'--------------
'primero copia alguna celda que tenga el formato
'que deseas copiar'luego colocate sobre la celda o celdas
'ahora corre la macro


Sub Paste_formats()

Selection.PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False

End Sub

'Copiar y Pegar valores
'------------------------


Sub PegarValor()

'de igual manera colocate
'sobre una celda con formula

Selection.Copy

'ahora sobre el rango donde deseas
'pegar solo como valor

Selection.PasteSpecial Paste:=xlValues

Application.CutCopyMode = False

End Sub

Se me paso mencionar algunas de las combinaciones de teclas para el editor de codigo pero aqui hay unas cuantas que falto mencionar.

Combinaciones de teclas para manejar el editor
-------------------------------------------------------
de codigo para vba (por ahora las más necesarias)
----------------------------------------------------------

para Abrir el editor simplemente presiona ----> Alt + F11

Estando ya sobre ele entorno del editor vba

PRESIONA ---> F2 (Examinador de objetos )

ir a cuadro de dialogo buscar ---> F3

ir a ventana de propiedades ----> F4

Para Ejecutar una macro -------> F5

Correr el codigo linea por linea (las instrucciones)----> F8

viernes, 25 de enero de 2008

Respuesta(Insertar en un datatable un rango de casillas del excel)

Hoy he recibido un correo con la sgte consulta:

- Programa .net que lea un excel y actualice la BD
- ¿Como insertar en un datatable un rango de casillas de Excel?

*Doctores , no es la intención si es que este ejemplo sale un poco del orden del avance de temas del blog
Pero creo que es importante igualmente
compartir la mayor cantidad de conocimientos posibles.

No lo he hecho antes, pero creo que si procedes de esta forma, funcionará:

1.-Convierte tu rango de celdas a un archivo xml físico.
2.-Luego, el datatable acepta como origen de datos un archivo XML, entonces cargas el datatable con el xml que creaste...algo así:DataSet ds = new DataSet();ds.ReadXml("myXmlFile.xml");return ds.Tables(0);

martes, 22 de enero de 2008

Procedimientos y Funciones 0.1

Ahora ya seguarmente con una mejor referencia
de como trabajar en Excel con el modelo de objetos.

Volviendo a la definicion inicial del Vba(Visual Basic para Aplicaciones)

"Es el lenguaje con el que podras manipular los objetos de Excel y crear tus propias aplicaciones(claro mas adelante) por ahora macros utiles."

*Por eso era muy importante primero verificar el modelo de objetos de Excel.

Los procedimientos
---------------------
Conjunto de instrucciones que realiza una accion.
*esta encerrado pot las palabras reservadas
Sub y End Sub

ejemplo
----------
Sub crear_libro

'instruccion1
'instruccion2
'instruccion3

End Sub

Las funciones
---------------
A diferencia de un procedimiento
una función devolvera valores
*esta encerrado po las palabras reservadas
"Function" "End Function"

ejemplo
--------

Function MostrarTriple(numero)

'devolvera el triple de un número

MostrarTriple=numero*3

Msgbox MostrarTriple

End Function

ejemplo
--------
'el primer pasos sera crear un procedimiento(mostrar_triple)
'que llame a la [funcion "convertirTriple"]
'luego le pasamos el numero que deseamos que convierta
'debes colocarte ahora sobre el procedimiento mostrar_triple'
y presionar f8 hasta que obtengas recuperar el valor de la funcion

'pega el procedimiento y la funcion en un modulo

Sub mostrar_triple()

'aqui le pasamso el numero 55 a la funcion
'y simplemente mostramos en un mensaje
' el valor que nos devuelve la funcion

MsgBox convertirTriple(55)

End Sub


Function convertirTriple(numero)

'devolvera el triple de un número
'en este caso el numero="55"'y
'luego lo multiplica por 3

convertirTriple = numero * 3

End Function

domingo, 20 de enero de 2008

El Modelo de objetos de Excel

Antes de continuar con los temas debemos tenera algunas consideraciones para continuar trabajando con objetos en el Excel (Excel vba)

Importante no olvidar lo sgte :

- Los objetos cuentan con "propiedades" y "métodos".

-Una propiedad es un atributo del objeto que define una característica del mismo

Un Ejemplo, la propiedad "Row" del objeto "ActiveCell" nos indica en qué fila de la hoja está la celda activa.

Macro sobre la propiedad Row de la celda

Sub celdax()

MsgBox ActiveCell.Row 'devuelve la fila de la celda activa
MsgBox ActiveCell.Column 'devuelve la columna de la celda activa

End Sub

Para poder acceder a una propiedad de un objeto se utiliza el nombre del objeto, seguido de un punto y el nombre de la propiedad.

Como se vio justamente en ejemplo de la propiedad Row para la celda

ActiveCell.Row

donde el objeto es la celda activa : ActiveCell

la propiedad es : Row

MsgBox ActiveCell.Row

Los "métodos" son las acciones que podemos llevar a cabo sobre el objeto.

Para llamar a un método se utiliza el nombre del objeto, un punto y el nombre del método

Ejemplo, el método "ActiveCell.Clear" borra el contenido de la celda activa

como te habras dado cuenta en la mayoria ejemplos hemos empleado instrucciones
muy similares a esta.

Hemos colocado Msgbox para mostrar una característica de un objeto

y de esa manera obtener el valor de una propiedad determinada.

MsgBox ActiveCell.Row

Va ser importante entonces notar la diferencia entre propiedades y metodos de l0s objetos en el Excel

Hasta aqui las propiedades nos permiten:(obtener características de los objetos )
y los metodos (llevar acciones sobre un objeto tal y como se vio en el ejemplo la accion ejecutada fue borrar el contenido de la celda "ActiveCell.Clear").

*La totalidad de acciones que puede realizar un usuario sobre un objeto(Metodos del objeto)
*Valores que se podran obtener o asignar(propiedades del objeto)


*Tampoco debes olvidar que para trabajar sobre un objeto en Excel no es necesario seleccionarlo

'En esta macro de ejmplo podras comprobarlo

Sub celda_conseleccion()

'seleccionamos el rango A1

Range("A1").Select

'asignamos a la seleccion el color'con el index=5

ActiveCell.Interior.ColorIndex = 5

'pero las lineas iniciales no seran necesarias
'bastara con trabajar directamente sobre el'rango "A1"


Range("A1").Interior.ColorIndex = 8


End Sub

miércoles, 16 de enero de 2008

Metodos del Objeto Range

A) Activate:
--------
Activar el Rango seleccionado.

B)Clear
-----
Borrar los valores y formatos del Rango.

C)ClearContents
--------------
Solo borra los valores del rango manteniendo el formato intacto.

D)Delete
-------
Eliminar el Rango indicado.

E)Calculate
---------
Recalcular las formulas en un rango indicado.

'Ahora una macro de ejmplo de los metodos del objeto range

'Excel VBA Macro de ejemplo aplicacion de metodos del objeto range

Sub ejemplo_range_met()

Range("A1").Activate 'Activa el Rango
Range("A1").Delete 'eliminar el rango
Range("A1:A100").Calculate 'recalculo en el range
Range("A2").Clear 'borra contenido y formatos
Range("A2").ClearContents 'solo contenidos

End Sub

Objeto Range del Excel- Excel VBA MAcros Ejemplo propiedades Objeto Range

Un concepto adeacuado y util del obejor range del Excel por ahora seria pensar en un objeto Range como una celda, una fila, una columna o una selección de celdas

*Un objeto range estara contenido dentro de un objeto woorsheet

Propiedades del Objeto Range
-----------------------------

a)Address
---------
Indica la dirección del rango seleccionado.

ejemplo
--------
MsgBox ActiveCell.Address 'devolvera la direccion dela celda activa

b)Count
------:
Cuenta el número de objetos de un conjunto.

ejemplo
--------

MsgBox Selection.Cells.Count 'devolvera la cantidad de celdas seleccionadas

c)Name
------:
Nos servira pra asignar o recuperar el nombre de un rango

Selection.Name = "prueba_vba"

d)Value
------
Devuelve el valor de un rango

MsgBox Range("A1").Value 'el valor del rango de la celda A1

e)formula
--------
MsgBox Range("A1").Formula

sábado, 12 de enero de 2008

Objeto Worksheet de Excel

El objeto Worksheets representa a las Hojas de un Libro de Excel

*La colección de WorkSheets es formada por las hojas de un libro.

* Cada miembro de la colección Sheets es un objeto Worksheet(hoja)


Metodos del objeto Worksheets
--------------------------------

Delete
-------
Permite Eliminar una Hoja


Por ejemplo Eliminar la hoja Abril

Sub delete_hoja()

Application.DisplayAlerts = False 'asignamos a falso para evitar
' las alertas de Excel al eliminar hojas

Sheets("Abril").Delete 'eliminando hoja="Abril"

Application.DisplayAlerts = True 'devolvemos el valor por defecto "verdadero"


End Sub



Add
------
Crear un nueva hoja



Sub new_sht()


Sheets.Add 'agregar una hoja

Sheets.Add after:=Sheets(2) 'agregar un hoja al libro y colocarla despues de la hoja2

End Sub



Move
------
Permite Mover una Hoja

Sub new_sht()

'movemos la hoja enero despues de report

Worksheets("enero").Move After:=Sheets("report")

End Sub




Select
------
Permite Seleccionar una Hoja



sub selex

Sheets(2).Select 'seleccionamos la hoja 2 del libro

end sub



Copy
------
Permite Copiar una Hoja



Sub new_sht_copy()

'creamos auna copia de la hoja enero
'y la colcamos despues de la segunda hoja del libro


Worksheets("enero").Copy After:=Sheets(2)

End Sub


'ahora un ejemplo de 2 propiedades del objeto worksheet

Sub ejemplo_worksheet_prop()

'macro de ejemplo 2 propiedades
'muy comunes del objeto worksheet
'te devuelve el nombre de la hoja
'por ahora innecesario aparentemente
'pera notaras la utilidad de esta
'propiedad a la hora de hacer compraciones
'o busquedas entre las hojas del libro

MsgBox ActiveSheet.Name


'esto te devolvera el indice de
'la hoja activa(Índice de la Hoja)
'es decir si es la hoja 1 o 2 o 3,etc del libro

MsgBox ActiveSheet.Index


End Sub

jueves, 10 de enero de 2008

Métodos del objeto Workbook de Excel

a) Activate : Activa un libro

b) Close :Cierra el libro con la posibilidad de indicar si deben guardarse los cambios.

c) Protect Unprotect :Permite proteger un libro, de forma que los usuarios no puedan agregar ni eliminar hojas de cálculo, y volverlo a desproteger.

d) Save :Guarda el libro. Si el libro no se ha guardado antes, Excel lo guarda en la carpeta actual

e) SaveAs :Permite guardar el libro especificado, indicando a título opcional un nombre, un formato de archivo, una contraseña

f) SaveCopyAs :Guarda una copia del libro en un archivo, pero no modifica el libro abierto en memoria. Este método es útil cuando se desea crear una copia de seguridad sin modificar la ubicación del libro.

Ejemplos de macros del Uso de Metodos del objeto Workbook del Excel

'el codigo vba excel en 2 ejemplos simples

Sub activate_wbk_excel() 'activar el libro

'con esta linea podras evitar el mensaje de error del excel
'en caso no exista ese libro de Excel

On Error Resume Next

Workbooks("Excel VBA Finance").Activate


End Sub


'nuevamente debes correr la macro linea
'por linea para que te fijes los cambios 'en el excel

'ahora necesitas crear 5 libros nuevos 'cada libro de Excel forma parte de la colección de libros 'entonces tamnbien cada libro cuenta con un index 'y tambien puedes referenciar un workbook con un número 'en este caso el 1 reprenta a el libro 1 de la coleccion de libros de excel 'en cualquier caso tambien puedes hacer referecia por el nombre del libro

Sub Close_wbk_excel()


Workbooks(1).Close True 'cerrar el libro guardando cambios

Workbooks("5").Close 'cerrar el libro sin guardar cambios

Workbooks(2).Save 'Guarda el libro

Workbooks(3).SaveAs "C:\Documents and Settings\JesusMartin\Escritorio\Excel ejemplo.xls"

'guarda una copia

Workbooks(4).SaveCopyAs "C:\Documents and Settings\JesusMartin\Escritorio\Copia de ejemplo Excel.xls"

End Sub

miércoles, 9 de enero de 2008

Propiedades del objeto Workbook de Excel

Propiedades del objeto Workbook de Excel
-------------------------------------------
a)Name:
----
Devuelve el nombre del libro.


b) FullName:
--------
Devuelve la ruta de acceso completa, incluido el nombre del libro.

c) Path
----:
Devuelve la ruta de acceso.

d) Author
------:
Permite establecer el nombre del autor creador del libro.


Macro de ejemplo del uso de las propiedades del Objeto workbook
------------------------------------------------------------------

Sub Propiedades_libro()

'ejemplos del uso de las propiedades'del objeto workbook Excel(Codigo Vba Excel)
'ActiveWorkbook.Author = "Tula"


MsgBox ActiveWorkbook.Name

'si el libro no ha sido guardado todavia'al menos una vez entonces Path no devolvera nada
MsgBox ActiveWorkbook.Path


MsgBox ActiveWorkbook.Name

MsgBox ActiveWorkbook.FullName

End Sub

Objeto application en Excel -Excel macros

'Objeto application Excel (Excel macros - vba) II
'Otras propiedades del objeto application Excel

Propiedades del Objeto Application de Excel
---------------------------------------------
'devuelve la ruta de instalacion de Microsoft excel

Msgbox application.path

'maximizar la ventana
application.Windowstate=xlmaximized

'Cambiar el titulo de la ventana principal del Excel


Application.caption="Cuentas de enero"


Metodos del objeto application
------------------------------
a)QUIT
------
'Este metodo es empleado para Salir del Excel'cuidado con perder algun trabajo'si hay libros abiertos Excel preguntara si desea guardar los cambios'pero cuidado si tienes displayalerts=false .Excel no te preguntara si deseas salir'y saldra de la application sin guardar los libros.


Application.Quit


b)RUN
------
Empleado para ejecutar una macro o una application Vba.
'aqui simplemente colocamos el nombre de la macro que buscamos'se ejecute en este caso "macro1"

Application.Run macro:="macro1"


Recuerda: El objeto Application esta en el nivel más alto de la jerarquia de los objetos del Excel y representa al mismo Microsoft Excel.

lunes, 7 de enero de 2008

Macro :Ejemplo de propiedades del objeto Application Excel

'Macro de ejemplo codigo vba Excel :'Objeto Application Excel

'para complementar las propiedades del objeto application de Excel
esta seria otro pequeño ejemplo del uso del objeto application En excel

Sub macro_excel_application()

'Nombre del usuario
MsgBox Application.UserName

'Nombre de la empresa
MsgBox Application.OrganizationName

'el Sistema operativo
MsgBox Application.OperatingSystem

'Carácter separador de miles
MsgBox Application.DecimalSeparator

'la Impresora por defecto
MsgBox Application.ActivePrinter

'la Ruta a carpeta Add-ins
MsgBox Application.UserLibraryPath

End Sub

Objeto application en Excel -Excel macros

El objeto Application proporciona un gran conjunto de propiedades que controlan el estado general de Microsoft Excel.


Propiedades del objeto Application
-------------------------------------------
Aqui una pequeña lista de algunas de las propiedades del objeto application tal vez las más adecuadas de revisar por ahora teniendo en cuenta que la idea es ir familiarizandose de a pocos)

A) ScreenUpdating(Boolean) Si es True, Excel actualiza su pantalla después de cada llamada a un método. Puede desactivar la presentación mientras se ejecuta el código. Asegúrese de establecer de nuevo esta propiedad en True.

El objeto Application proporciona también un grupo de propiedades que controlan la presentación en Excel. Puede modificar cualquiera de estas propiedades para cambiar lo que el usuario ve en la pantalla.

A continuación se incluyen algunas de las opciones de presentación comunes:

B) DisplayAlerts(Boolean) Si es True (el valor predeterminado), Excel muestra mensajes de advertencia mientras se ejecuta el código, cuando sea necesario. Establezca esta propiedad en False para omitir las advertencias y seleccionar el valor predeterminado.

'Un ejemplo de las alertas que muestra el excel seria el mensaje de confirmación cuando se desea eliminar una hoja,.

C) DisplayFormulaBar(Boolean)Si es True (el valor predeterminado), Excel muestra la barra de fórmulas estándar para la modificación de celdas; establézcala en False para ocultar la barra.

D) DisplayFullScreen(Boolean) Si es True, Excel se ejecuta en el modo de pantalla completa (con un efecto diferente al que se obtiene maximizando la ventana de Excel); el valor predeterminado es False.

Al igual que ocurre con la propiedad ScreenUpdating, es importante restablecer la propiedad DisplayAlerts. Con DisplayAlerts como False, Excel no pregunta si se desea guardar los libros antes de cerrarlos, por lo que se pueden perder los datos.

Ahora una pequeña macro que muestra como funciona en el codigo Vba - Excel lo comentado.

macro( ejemplo de objeto application excel)

'Objeto application no te olvides de ejecutar linea por linea para que observes los cambios en Excel

Sub excel_macro_applicati() 'vba_application

Application.DisplayAlerts = False 'aqui Excel no pediria confiramción para eliminar una hoja

Application.DisplayAlerts = True ' Excel solicita confirmación de determinadas acciones)
'esta propiedad debe estar asignada como True por defecto

Application.DisplayFormulaBar = False 'Ocultar la barra de formulas de

Application.DisplayFormulaBar = True 'Mostrar barra de formulas de Excel

Application.DisplayFullScreen = True 'Excel se ejecuta en el modo de pantalla completa

Application.DisplayFullScreen = False 'Devuelve el valor x defecto



End Sub

sábado, 5 de enero de 2008

Modelo de Objetos Excel (Macros - Excel Vba )

Ejemplos de objetos seria un libro de trabajo, una hoja de cálculo,un rango de una hoja de cálculo. Encntramos más objetos a nuestra disposición y manipularan mediante el uso de código VBA.·Las clases de objetos están ordenados de manera jerárquica. Los objetos actuan como contenedores de otros objetos. Por ejemplo, Excel es un objeto llamado Applcation y contiene otros como WorkBook y CommandBar. El objeto WoorkBook puede contener otros objetos como WorkSheet y Chart. Un objetoWoorkSheet puede contener objetos como Range . Nos referimos al orden de estos objetos como modelo de objetos de Excel.

Por ejemplo, la colección de WorkSheets está compuesta por todas las hojas de cálculo de un libro . La colección CommandBars está compuesta por los objetos CommandBar. Las colecciones son objetos en símismas.Cuando nos referimos a un objeto contenido o miembro, estamosespecificando su posición en la jerarquía del objeto, usando unpunto como seprador entre el contenedor y el miembro.

Application.WorkBooks("Cuentas.xls")Esto se refiere al libro "Cuentas.xls" en la colección de WorkBooks.
Modelo de Objetos del Excel






Una vez que el usuario aprende a leer e interpretar una libreria de objetos del Excel se puede apuntar a nuevas posibilidades y proyectarse de seguro hacia como ponerlas en practica .La mejor manera de aprender como se comunica vba con excel es grabar algunas macros sencilas.





Seria importante tambien hacer lo sgte :

Entendiendo que estas sobre un libro de Excel


1) Presiona "ALT" + "F11"

- ya estas sobre el entorno Vba del Excel

2) Presiona "F2"

Ahora puedes ver el examinador de objetos

-para el ejemplo de la imagen he colocado -->"application" en la cajita y como veras


nos muestra toda una jeraquia de objetos apartir del objeto "applicaction"


igualmente puedes colocar tambien "workbook" o cualquier elemento del


modelo de objetos y asi de esa manera podras tambine darte cuenta de la estrctura de objetos para el Excel.

viernes, 4 de enero de 2008

Microsoft Excel Macros - Codigo Vba Excel

Como ya hemos creado algunas macros para Excel muy simples y ahora pueden crear las macros basicas...creo que podemos seguir avanzando..

Creo que ahora podemos darle otra orientación al tema de pronto seria importante ... tratar el tema de una forma
tal vez más amplia es decir ..explicar muy a groso modo el modelo de objetos de Microsoft Excel .....

Modelo de objetos de Excel (los primeros objetos de Excel que necesitamos conocer)
------------------------------------------------------------------------------------------
Como los datos de un documento de Excel están muy estructurados, el modelo de objetos es jerárquico y sencillo. Excel proporciona cientos de objetos con los que quizá desee interactuar, pero puede empezar a trabajar con el modelo de objetos centrándose en un subconjunto muy pequeño de los objetos disponibles. Entre éstos se incluyen:

Esta seria una pequeña definición..muy practica

a) Application (representa la propia aplicación Excel)
b) Workbook (representa un libro en la aplicación Excel)
c) Worksheet (representa una hoja del libro )
d) Range ( representa una celda, una fila, una columna, una selección de celdas que contiene

uno o más bloques de celdas (que podrían ser contiguos o no), o incluso un grupo de celdas
de varias hojas. )
*será el objeto más utilizado en las aplicaciones de Excel

Modelo jerárquico
-------------------------------------------------------------------------
Application-->Workbooks-->Sheets --> Range
(Excel) --> (Libro) --> ( Hoja) --> (celda o celdas )

*Accediendo a la colección de libros accederemos
a un libro determninado.

-en este caso activamos "Libro1.xls"

- Workbooks("Libro1.xls").activate

-referenciar a el libro activo : ActiveWorkbook

*Igualmente de la colección de hojas indicamos una del conjunto
en este caso activamos la hoja "cuentas"

- Sheets("cuentas1").activate

-referenciar a la hoja activa : ActiveSheet

*Referenciando un rango:
* y activamos la celda A1

- Range("A1").activate

-la celda activa se referencia como : ActiveCell

ejemplos macros excel vba

sub gridlines

'seria bueno que ejecutes el codigo linea por linea
'como te explique en algun post anterior
'debes dar click sobre la macro en la primera linea
'y luego de presionar f8 podras ejecutar tus macros de excel por pasos



ActiveWindow.DisplayGridlines = False ' quitar las lineas de la hoja


ActiveWindow.DisplayGridlines = True ' mostrar las lineas de la hoja



end sub


sub trabajndo_con_colores

'en el excel puedes modificar 56 colores
' en este ejemplo modificaremos el color 44 de la paleta de colores


ActiveWorkbook.Colors(44) = RGB(230, 230, 233)
'con esto cambias el color con el index 44 en todas las celdas del libro


'restablecer los colores por defecto
ActiveWorkbook.ResetColors


'copiar colores desde otro libro
ActiveWorkbook.Colors = Workbooks("coloradon.xls").Colors
'con esto copias los colores del libro "coloradon.xls" para tu libro activo.


'-------------------------
'y si solo quieres trabajar con una celda o selección
'como te dije puedes usar cualquiera delos 56 colore que la paleta de Excel

ActiveCell.Interior.ColorIndex = 16 'en este caso le asignamos color 16 a la celda


Selection.Interior.ColorIndex = 56 'ahora sobre la selección(una celda o varias)


end sub

nuevos ejemplos macros excel( codigo excel vba)

*aqui unos pequeños mini-macros.. para que continues con tus primeros pasos
en el vba.

'ojo logicamente para este ejemplo estas sobre un 'libro de prueba para que no pierdas algun avance sin guardar

sub cerrar_book1 'prueba1

ActiveWorkbook.Close 'con esto cierras tu libro.. sin guardar cambios

end sub


sub cerrar_book2 'prueba2

ActiveWorkbook.Close(True) ' cerrar guardando los cambios realizados

end sub



sub opens_wbk

'Abrir un libro de Excel ..desde una ruta conocida

Workbooks.Open FileName:="F:\examples\antiguos_modelos.xls"

end sub

sub obtener_name 'obtener el nombre del libro activo

MsgBox ActiveWorkbook.FullName

end sub

sub agreagar ' con esta macro agregas una nueva hoja en el libro activo

ActiveWorkbook.Sheets.Add

end sub

sub eliminar 'aqui eliminaremos la hoja "calculos1"

sheets("calculos1").delete

end sub

Sub select_primera 'activamos la primera hoja

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

'tambien podrias activarlo asi:

activeworkbook.sheets(1).activate

end sub

sub select_last 'activar la ultima hoja

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

end sub

sub new_sheet ' con este ejemplo podras Insertar una hoja nueva (en la posición que quieras)

ActiveWorkbook.Sheets.Add Before:=Worksheets("pagos_abril")

end sub

sub mover_sht 'ejemplo de como mover una hoja

Worksheets("hojaxxx").Move After:=Worksheets("hojayyy")

end sub

sub eliminar las_shts ' y si te molesta eliminar las hojas una por una

'puede seleccionar varias y eliminarlas con la sgte macro.

ActiveWindow.SelectedSheets.Delete

end sub