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.

Comprobacion del Disco Duro

En caso de que detectemos un error en disco duro o como prevención y comprobación de la salud del disco duro es conveniente comprobar periodicamente nuestros discos duros para evitar perdidas de información. Tenemos una utilidad de Windows para tal función esta utilidad nos revisará el estado del disco duro comprobando su integridad, probará reparar sectores defectuosos o dañados, y si fuera necesario, esos errores los aislaría para que no tenerlos en cuenta en otras búsquedas posteriores.Aparte desde el mismo Sistema Operativo tenemos otros comandos que pueden ser usados desde la consola de recuperación o desde el prompt del sistema chkdsk. Cada uno de estos comandos tiene unos modificadores para realizar las funciones que nosotros creamos necesarias.

Algunos fabricantes ofrecen soluciones específicas para sus productos. Hay que tener en cuenta que solo funcionan con unidades de disco de la propia marca. 

1.- Seagate Tools │ Seagate

2.- Western Digital DLGDIAG (Data Lifeguard Diagnostic)Western 

3.- Samsung Hutil │ Samsung

También tenemos herramientas independientes como CrystalDiskInfo, esta es una de las mejores, y gratuita.

Más información | CrystalDiskInfo


* Como usar CHKDSK desde el explorador de Windows.

1.- Dirigete al explorador de windows.

2.- Pulsa encima de la unidad a comprobar con el boton derecho de ratón y pulsa en Propiedades

3.- En la pestaña Herramientas pulsa el botón Comprobar, se abrirá la ventana Comprobar Disco

* Como usar CHKDSK desde la consola de CMD o en el comando Ejecutar.

1.- Una vez entras en la consola CMD con permisos de administrador escribe: CHKDSK más la letra de la unidad a revisar seguida de dos puntos y a continuación el parámetro.

chkdsk (Unidad): (parámetros)


ejemplos para la unidad C - CHKDSK C:
                                           CHKDSK C:/F
                                           CHKDSK C:/F /R


De esta manera podemos ejecutar directamente desde el cuadro de inicio de windows.
CMD.EXE /K CHKDSK C: /F

Parámetros que se pueden emplear con CHKDSK:

/f - Este parámetro nos permite corregir errores en el disco.
/r - Encuentra los sectores dañados y recupera la información en ellos que sea posible recuperar.
/i - Realiza una comprobación menos exhaustiva de entradas de índice (Sólo para NTFS)
/c - Omite la comprobación de ciclos dentro de la estructura de carpetas (Sólo para NTFS)
Los dos anteriores reducen la cantidad de tiempo necesario para ejecutar Chkdsk ya que omiten ciertas comprobaciones en el volumen.
/x - Fuerza al volumen a desmontarse primero si es necesario (es necesario usar /f)
/b - Vuelve a evaluar los clústeres incorrectos en el volumen es necesario usar /r (Sólo para NTFS)
/? - Despliega la ayuda de chkdsk.


* Como usar CHKDSK desde la consola de recuperación.
Si no se inicia Windows podemos ejecutar para intentar recuperar el disco duro. La Consola de recuperación es una ventana de MSDOS que se ejecuta desde un disco de instalación Windows.
En esta opción solo hay dos parametros:

CHKDSK - Simplemente muestra el estado del disco de inicio.
CHKDSK C: /P - Chequea el disco y corrige errores.
CHKDSK C: /R - Chequea el disco, corrige errores, localiza sectores dañados y trata de recuperar la información que sea posible.

Hay recordar que antes de hacer cualquier paso, realizar una copia de seguridad, por si acaso!! 

VBA - Instrucciones de comandos.

Private Sub cmd_Nuevo_Click()
DoCmd.GoToRecord , , acNewRec
    Me.cmd_guardar.Enabled = False
End Sub

Private Sub cmd_Cerrar_Click()
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Nombre Formulario"
End Sub

Private Sub cmd_Anterior_Click()
Me.Recordset.MovePrevious
    If Me.Recordset.BOF Then
        Me.Recordset.MoveNext
        MsgBox "Ya estás en el primer registro.", vbInformation + vbOKOnly, "AVISO"
    End If
End Sub

Private Sub cmd_Siguiente_Click()
Me.Recordset.MoveNext
    If Me.Recordset.EOF Then
        Me.Recordset.MovePrevious
        MsgBox "Ya estas en el último Registro", vbInformation + vbOKOnly, "AVISO"
    End If
End Sub

Private Sub cmd_Guardar_Click()
DoCmd.RunCommand acCmdSaveRecord
    Me.cmd_guardar.Enabled = False
End Sub

Private Sub cmd_Eliminar_Click()
Dim resp As Integer
resp = MsgBox("¿Estas seguro de querer eliminar el registro?.", vbYesNo + vbInformation, "Confirmar")
If resp = vbYes Then
DoCmd.RunCommand acCmdDeleteRecord
End If
DoCmd.GoToRecord , , acLast
End Sub

Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acLast
End Sub

Private Sub Imprimir_Click()
DoCmd.OpenReport "Nombre Informe", acPreview, , "[id]=" & Me.Id.Value
End Sub

Comprar ordenador sobremesa portatil all in one convertible mac

Cuando vamos a comprar un ordenador nos encontramos con múltiples alternativas, ordenador Portátil, ordenador de Sobremesa, Mac, Convertibles, All in One y cuando ya nos decidimos por un modelo en concreto, nos encontramos ante una lista de especificaciones técnicas de todo tipo: procesador, disco duro, memoria RAM, tarjeta gráfica....  Pero antes de ir a la busca y compra de nuevo ordenador deberíamos tener en cuenta estos aspectos:

Definir el dinero que quieres gastar. Hay mucha diversidad y podemos encontrar una buena máquina con nuestro presupuesto sin pagar más por lo que igual no necesitamos, también tenemos marcas blancas o clónicos aparte de los de marca.

Plantear su uso y las necesidades. Tenemos que plantearnos si el ordenador va estar en un lugar fijo o lo vamos a llevar a diferentes lugares, ordenador de sobremesa o el resto, también no es lo mismo utilizar un ordenador para tareas elementales navegar por Internet, ver películas, escuchar música, que para jugar, editar de videos que sí tendríamos que tener en cuenta por ejemplo la tarjeta gráfica.

Paciencia al comprar. No se trata de comprar a la primera de cambio. Es mejor tener paciencia y seguro que encontraremos alguna cosa que se adapte a nuestro presupuesto con relación calidad/precio adecuado.

Comparar precios. Existen muchísimas tiendas donde poder comprar, tanto físicas como on-line, con las características claras podemos utilizar la multitud de webs comparativas para encontrar el más barato.

Pensar en futuro. Cualquiera que te compras seguro que llegará el día que quedará desactualizado. Un ordenador de sobremesa vas a poder ampliarlo o cambiarle elementos sin problemas. En un portátil, Mac, Convertibles, All in One como mucho podrás aumentar la memoria y poco más, el resto lo tendrás que realizar con dispositivos externos. Dando de esta manera más vida útil a nuestra compra.

 La Compra
 Para comprar un ordenador tenemos que fijarnos en tres elementos claves: el procesador, la tarjeta gráfica y la memoria RAM.
 
Principales Componentes
-Procesador o CPU: Es el corazón del equipo. Es la parte que se encarga de ejecutar el sistema operativo y las aplicaciones.
-Tarjeta gráfica: Controla las imágenes. Es quien se encarga de procesar todas las imágenes producidas y las envía al monitor.
-Memoria RAM: La RAM es un tipo de memoria que utiliza el procesador para volcar de forma temporal cálculos para hacer funcionar las aplicaciones. Es muy importante ya que en ella se incluyen los programas y datos que estés ejecutando.
 
Tipos procesador (Intel/AMD)

INTEL
Intel dispone de varias gamas de procesadores:
-Intel Celeron:  Procesador de bajo rendimiento y muy limitado. Pensados para labores de ofimática e Internet.
-Intel Core i3: Procesador de bajo rendimiento y bajo consumo. Pensados para labores de ofimática e Internet. Se usan en miniPCs, Chromebooks y portátiles
-Intel Core i5: Rendimiento medio, sirven para todo pero tienen sus limitaciones al realizar tareas como tareas gráficas intensivas o 3D y juegos exigentes.
-Intel Core i7: Alto rendimiento, para gaming y tareas gráficas intensivas o 3D.
-Intel Xenon: Servidores.

Dentro de la gama de los procesadores, al final o en mitad del nombre del procesador nos indican una letra, que significa:

Sobremesa:
 -K: Los procesadores terminados en K no tienen bloqueo de velocidad y voltaje. Se pueden overclockear, es decir, aumentar su velocidad de fábrica.
 -T: Procesador optimizado para extraer la máxima potencia.
-X: Extreme. Máximo rendimiento.
 Portatiles:
-H: Gráficos de alto rendimiento.
-HK: Gráficos de alto rendimiento sin bloqueo de velocidad.
-HQ: Gráficos de alto rendimiento con cuatro núcleos.
-Y: Consumo muy bajo, por tanto, menos potentes.
-U: Consumo ultrabajo, no requiere ventiladores.

AMD
Los procesadores AMD suelen ser menos potentes que los Intel pero por contra son más baratos.
 -Athlon 5000, Sempron 3000: Procesador de bajo rendimiento para labores de ofimática e Internet
-APU Serie A: Gama de entrada con GPU gráfica integrada en el propio procesador
-Athlon X4: Rendimiento medio, sirven para todo pero tienen sus limitaciones al realizar tareas como tareas gráficas intensivas o 3D y juegos exigentes.
-AMD FX: Alto rendimiento, para gaming y tareas gráficas intensivas o 3D.

Memoria RAM
Busca siempre una RAM tipo DDR3/DDR4, ya que son las mas utilizadas y más rápidas. Lo mínimo recomendable es que tenga 4 GB de RAM, pero si quieres trabajar con programas de diseño o jugar a juegos potentes, lo aconsejable sería 8 GB.

Tarjeta gráfica
La mayoría de los equipos traen una tarjeta integrada que para el dia a dia y si solo quieres el equipo para labores de ofimática e Internet  o jugar a juegos no muy exigentes, es suficiente. Para jugar a juegos exigentes o trabajar con multimedia se requiere una tarjeta dedicada. Hay dos grandes fabricantes NVIDIA y AMD

NVIDIA.Gama de tarjetas

-GeForce 8xxx y 9xxx: Gama antigua, sólo son útiles en ofimática e Internet.
-GTX 7xx: Gama media/baja, buen rendimiento pero no pueden con los juegos y aplicaciones potentes.
-GTX 9xx: Gama media, aún funcionan bien con los juegos.
-GTX 10xx: Gama alta, recomendable para juegos.
-GTX Titan: La gama más alta, pensada para exprimir al máximo los juegos más exigentes.
-Quadro: Entornos de diseño gráfico.

AMD. Gama de tarjetas
-Radeon R5: Gama baja, sólo son útiles en ofimática e Internet.
-Radeon R7: Gama baja, buen rendimiento pero no pueden con los juegos y aplicaciones potentes
-Radeon R9: Gama media, aún funcionan bien con los juegos.
-Radeon RX: Equivalente a los modelos más bajos de la familia GTX 10xx de NVIDIA

Disco Duro
Actualmente hay dos tipos de disco duro, compactos o SSD.
-Si necesitas es velocidad y no tienes pensado guardar archivos de gran tamaño, lo suyo es un disco duro SSD.
-Si necesitas mucho espacio porque vas a guardar archivos de gran tamaño, como por ejemplo películas o muchos juegos, entonces con un compacto tienes suficiente. Capacidad con 1 TB suficiente.

Conexiones
-Adaptador Wifi, es importante pensar si lo necesitas, muchos equipos no traen este componente.
-USB, es recomendable que haya alguna conexión USB 3.0, ahora mismo la habitual es USB 2.0.



Si necesitas consejo o ayuda, ponte en contacto conmigo, soy de Martorell