Programación macro excel

He programado una macro en excel. El asunto es que realiza muchas tareas tiene muchas variables (por plena necesidad) y muchos condicionales. Necesitaría saber que consume mas recursos si un if o un select case. Como podría hacer para poner en un if varias condiciones con un & (he probado pero no me funcionaba asique tuve que hacer if anidados) que supongo que consumirá menos... En definitiva, cualquier consejo para poder aligerar la macro me vendría genial sobre todo en los casos que te he mencionado.

1 respuesta

Respuesta
1
Excelente consulta. Con gusto te responderé!
*Ambas "Estructuras de Control" que has mencionado (If - Else-End if / Select Case) Excel VBA las acepta. No se que hariamos si no existiesen.
*Si vamos a funcionalidad ambas estructuras tienen la misma finalidad, salvo que en el caso del Select Case es una la variable en cuestion la que se evalua. Dependiendo de lo que Excel analice en dicha evaluacion decidira que accion realizar. En el caso de los (If-Else-Elseif-End if) podemos realizar tantas condiciones como cuestiones por evaluar se requiera analizar.
*Si en tu caso necesitas "evaluar" una sola cosa convendria bien el "Select Case". Ahora si tienes varias cosas que necesitas "evaluar" seria con el otro. La cantidad de variables que tengas no importa siempre y cuando consideres los siguientes tips.
====
Ahora con respecto a rapidez de procesamiento de datos debido a las variables, depende de varios factores.
Uno de ellos es recomendable declarar las variables en cuestión. Tales declaraciones se realizan al inicio de la codificación.
*Declarar las variables y asignar el tipo de datos que tendra dicha variable que VBa reconocera y trabajara.
Ejemplo:
Dim rango as Range
Dim n as Integer
Al declarar una variable y asignando el tipo de datos que trabajara damos a Excel de antemano cuantos bytes almacenara en la memoria. Si no declaramos las variables ni asignamos el tipo de datos Excel lo toma como si fuese "Variant" el cual ocupa muchos bytes (valiosos bytes si es necesario tomar en cuenta rapidez)
====
*Declarar los objetos de hojas, libros, etc.
Ejemplo:
Set hoja=Activeworkbook.Sheets(2).Range("A1:A5")
====
Excelente respuesta je je.
Me ha venido genial sobre todo en el caso de las variables pues no había declarado todas y no lo había tenido en cuenta.
Sin embargo echo en falta una cosilla: Me recomiendas que si voy a analizar varias condiciones realice un if. El caso es que, como te comentaba, intente realizar un if con varias evaluaciones mediante un & pero no me funcionó.
Lo que escribí era una cosa tal que así: If veces=2 & hoja=3 then... Probe con parentesis y con doble && pero nada. Como se haría???
Muchas gracias. Puntuaré tu pregunta gustosamente ;-)
En primer lugar dejame decirte que el operador "&" sirve para concatenar cadenas. La expresión que mencionas no servirá para realizar tal acción para que Excel lo reconozca. Excel se incomoda e informa mediante un aviso de error.
Por la expresión que veo tratas de asignar una condicional mediante dos criterios si mal no me equivoco.
====
1.- Hagamos un ejemplo facil. Ingresa en A1=5 y en la celda B1=4
2.- Abre el editor de VBA, con ALT+F11. Inserta allí un nuevo modulo. En ese modulo pega el siguiente código:
Sub Prueba()
Dim veces As Integer
Dim hojas As Integer
veces = Range("A1")
hoja = Range("B1")
'veces=2 y hoja=3 entonces
If veces = 2 And hoja = 3 Then
    MsgBox "Veces es 2 y Hoja es 3"
Else
    MsgBox "No concuerdan los valores"
End If
End Sub
==========
3.- Luego, guarda los cambios y después lo ejecutas. Como puedes ver en la parte de evaluación del criterio con el IF se le esta diciendo a Excel que se cerciore de esos dos criterios. La manera de realizarlo es apoyándonos de "And" como puedes ver.
=====
Espero haberte ayudado en tu caso. De otro modo me avisas específicamente que cosa deseas hacer. Si esta es la respuesta que estabas buscando entonces te pediría que proceda a finalizar y puntuar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas