VBA seleccionar celdas y rangos

En más de una ocasión quienes trabajamos con Macros en Excel nos encontramos con la necesidad de seleccionar una celda o un rango de celdas de Excel.


Cómo seleccionar una celda en una hoja activa

Para seleccionar la celda A5 en la hoja activa, puede utilizar cualquiera de los ejemplos siguientes:

a) ActiveSheet.Cells(1, 1).Select
b) ActiveSheet.Range("A5").Select

Cómo seleccionar una celda en otra hoja del mismo libro

Para seleccionar la celda B6 en otra hoja del mismo libro, puede utilizar cualquiera de los ejemplos siguientes:

a) Application.Goto ActiveWorkbook.Sheets("[Nombre_Hoja]").Cells(2, 5)
b) Application.Goto (ActiveWorkbook.Sheets("[Nombre_Hoja]").Range("B6"))
c) Sheets("[Nombre_Hoja]").Activate
    ActiveSheet.Cells(2,5).Select


Cómo seleccionar una celda en una hoja de un libro diferente

Para seleccionar la celda C3 en una hoja de un libro diferente, puede utilizar cualquiera de los ejemplos siguientes:

a) Application.Goto Workbooks("BOOK2.XLS").Sheets("[Nombre_Hoja]").Cells(3,3)
b) Application.Goto Workbooks("BOOK2.XLS").Sheets("[Nombre_Hoja]").Range("C3")
c) Workbooks("[Nombre_Archivo").Sheets("[Nombre_Hoja]").Activate
    ActiveSheet.Cells(3, 3).Select


Cómo seleccionar un rango de celdas en otra hoja del mismo libro

Para seleccionar el rango A2:C8 en otra hoja del mismo libro, puede utilizar cualquiera de los ejemplos siguientes:

a) Application.Goto ActiveWorkbook.Sheets("[Nombre_Hoja]").Range("A2:C8")
b) Application.Goto ActiveWorkbook.Sheets("[Nombre_Hoja]").Range("A2", "C8")
c) Sheets("[Nombre_Hoja]").Activate
    ActiveSheet.Range(Cells(1, 2), Cells(3, 8)).Select

VBA Instrucciones Macros

Desactivar el parpadeo o actualizacion de pantalla al ejecutarse una macro.

Application.ScreenUpdating = False

Desactivar mensajes de alerta a la hora de ejecutar procesos

 Application.DisplayAlerts = False

VBA Procesos para Graficos

Proceso para averiguar el nombre del gráfico.

MsgBox ActiveChart.Name


Proceso para cambiar nombre del gráfico

Worksheets("[Nombre Hoja]").ChartObjects("[Nombre_Grafico]").Name = "[Nuevo Nombre]"

Proceso para cambiar el titulo al gráfico.


Gráfico incrustado:

Application.Workbooks("[Nombre_libro]").Worksheets("[Nombre Hoja]").ChartObjects("[Nombre_Grafico]").Chart.ChartTitle.Text = "[Nuevo Titulo]"

 Application.Workbooks("[Nombre_libro]")--> de estas instrucciones podemos prescindir ya que estamos en ellos.

Gráfico Hoja Independiente:

Sheets ["Nombre_Grafico]").ChartTitle.Text = "[Nuevo Titulo]"

Proceso para cambiar un gráfico de Incrustado a Independiente

Worksheets("[Nombre_Hoja]").ChartObjects("[Nombre_Grafico").Chart.Location xlLocationAsNewSheet, "[Nombre_Nueva_Hoja]"

El proceso inverso, de Independiente a Incrustado

Charts ("Grafico1").Location xlLocationAsNewSheet, "[Nombre_Hoja]" 

Proceso para activar el gráfico


Worksheets("[Nombre_Hoja]").ChartObjects("[Nombre_Grafico").Activate

Cambiar tipo de gráfico

 activechart.type = XLl[tipo_grafico]

Crear boton y eliminar graficos de la hoja.
Dentro del botón pegar esta instrucción

Activesheet.chartobjects.delete

Crear boton activex para poder cambiar el formato del gráfico.
Hay muchas mas instrucciones aqui algunas de ellas.

ActiveSheet.ChartObjects("[Nombre_Grafico").Activate

With ActiveChart

    .Type = xlArea
    .ChartArea.Font.Name = "[Tipo_Letra]"
    .ChartArea.Font.Size = "[Tamaño_Letra]"
    .PlotArea.Interior.Color = vb[Color_en_Ingles
    .Axes(xlValue).TickLabels.Font.[Tipo_Fuente] = True
    .Axes(xlCategory).TickLabels.Font.[Tipo_Fuente] = True
    .Legend.Position = xlLegendPositionBottom
   
End With

Modificar todos los graficos incrustados en la hoja

dim [nombre_variable] as chartobject

for each [nombre_variable] in Activesheet.ChartObject

[colocar las instrucciones a efectuar  ]

next [nombre_variable]









VBA estructuras control de flujo

Estructuras de control de flujo en Visual Basic Application (VBA):

* Condicionales
    - If - then
    - Then - case

* Bucles
   - Determinados: conocemos las veces que se ejecutará el codigo en su interior.
     . For - Next
     . For - each - next

   - Indeterminados: no conocemos las veces que se ejecutará el codigo en su interior.
     . Do - loop
     . While - wend
     . Do - until

* Goto: No aconsejable su uso (codigo espaghetti) excepto para el uso de VBA: captura de errores.


VBA Constantes


La instrucción Const se utiliza para declarar una constante y establecer su valor. Al declarar una constante, puede asignar un nombre significativo a un valor. Una vez que se declara una constante, no se puede modificar ni se le puede asignar un nuevo valor.

- byte = 0 a 255
- boolean = True (verdadero) o false (Falso)
- integer = nº entero (Desde -32768 al 32767)
- long = nº enteros largos
- single = nº decimales (parte decimal corta)
- double = nº decimales (parte decimal larga)
- currency = tipo moneda
- decimal = nº decimales (parte decimal extremadamente larga)
- object = objeto
- string = cadena de caracteres - estos valores siempre van entre comillas
- variant = sin especificar (comodín) mejor no usarlo.

Depende el tipo de datos abarca muchos mas recursos.


CONST 'nombre' as [tipo de valor]

Podemos declarar una constante de diferentes maneras:

1) Local a nivel procedimiento: solo en el procedimiento concreto
2) Local a nivel de modulo: valida a todos los procedimientos del modulo
3) Publica: se puede utilizar a cualquier modulo del proyecto.

1) Declarando la constante dentro del procedimiento, solo se leera dentro de ese procedimiento.
2) Declarando la constante fuera del procedimiento sera capaz de leer a nivel de modulo.
3) Declarando la constante en vez de DIM poner PUBLIC

1) y 2) Const nombre As String
3) Public Const nombre as String



VBA Tipos Datos Variables

Tipos de Datos y Variables VBA

Tipo de datos
       Tamaño 
       Intervalo
Byte
byte
0 a 255

Boolean
bytes
True o False

Integer
bytes
-32,768 a 32,767

Long (entero largo)
bytes
-2,147,483,648 a 2,147,483,647

Single (coma flotante/ precisión simple)
bytes
-3,402823E38 a -1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos

Double (coma flotante/ precisión doble)
bytes
-1.79769313486231E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos

Currency (entero a escala)
bytes
-922.337.203.685.477,5808 a 922.337.203.685.477,5807

Decimal
bytes
+/-79.228.162.514.264.337.593.543.950.335 sin punto decimal; +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el número más pequeño distinto de cero es +/-0,0000000000000000000000000001

Date
bytes
1 de enero de 100 a 31 de diciembre de 9999

Object
bytes
Referencia a tipo Object

String (longitud variable)
bytes + longitud de la cadena
0 a 2.000 millones


String (longitud fija)
longitud de la cadena

1 a 65.400 aproximadamente
Variant (con números)
bytes
valor numérico hasta el intervalo de un tipo Double

Variant (con caracteres)
bytes + longitud de la cadena
mismo intervalo que para un tipo String de longitud variable

Definido por el usuario  (utilizando Type)
número requerido por los elementos
intervalo de cada elemento es el mismo que el intervalo de su tipo de datos.

Depende el tipo de datos abarca muchos mas recursos.

Puedes obligar a que se active la declaración de variables en cada modulo, a partir de:

Herramientas > Opciones > Requerir declaración de variables.

De esta manera te obligará a declarar las variables que siempre es 'muy importante' hacerlo. Al

Variables : Es un espacio en la memoria del ordenador donde se puede almacenar un valor que podrá variar el valor durante la ejecución de un programa.

Como se declaran las variables : con la linea de codigo: dim 'nombre' as [tipo de dato], 'nombre' as [tipo de dato] sino ponemos el tipo de dato por defecto nos asignar 'variant' y equivale a un consumo mayor de recursos.

Ejemplo de procedimientos Sub

Ejemplo 1

Sub tipos_datos()

Dim nombre As String

nombre = "alberto"

Dim edad As Byte

edad = 43

End Sub

Ejemplo 2

Sub tipo_datos2()

Dim nombre As String, edad As Integer

nombre = "alberto": edad = 43

End Sub


Podemos declarar una variable de diferentes maneras:

1) Local a nivel procedimiento: solo en el procedimiento concreto
2) Local a nivel de modulo: valida a todos los procedimientos del modulo
3) Publica: se puede utilizar a cualquier modulo del proyecto.

1) Declarando la variable dentro del procedimiento, solo se leera dentro de ese procedimiento.
2) Declarando la variable fuera del procedimiento sera capaz de leer a nivel de modulo.
3) Declarando la variable en vez de DIM poner PUBLIC

1) y 2) Dim nombre As String
3) Public nombre as String


Restaurar windows 10 o 7 desde punto restauracion

Sigue los pasos a continuación te indico para restaurar tu ordenador a una fecha anterior utilizando un punto de restauración:

1) Escribe recuperación en el cuadro búsqueda de la barra de tareas y escoge Recuperación (Panel de control).

2) Haz clic en Abrir Restaurar sistema.

3) Haz clic en Siguiente.

4) Selecciona el punto de restauración, y haz clic en Siguiente. Haz clic en Finalizar.

El ordenador se reiniciará y mostrará un mensaje en el escritorio confirmando que la restauración fue correcta.