Jump to content
Sign in to follow this  
ssanceb

Repetir una macro n veces. siendo n el valor de una celda de otra hoja.

Recommended Posts

Hola a todos, espero que me puedan echar una mano con la siguiente duda:

Tengo una macro (en realidad es parte de otra, pero para lo que voy a explicar a continuación he tenido que hacer sea una propia macro independiente por sí sola), esta macro realiza una rotación de texto cada vez que se ejecuta.

El tema es que me gustaría que esta macro se ejecutara 1, 2, 3, 4.... veces en función del mes que apareciera en una celda de otra hoja en la que hay una lista desplegable para elegir dicho mes. Para que me entiendan Septiembre=1, Octubre=2, Noviembre=3. Por tanto al elegir yo de la lista desplegable el mes me gustaría que dicha macro se ejecutara y por tanto se produjera la rotación las veces que corresponden al mes elegido. Ejemplo: si elijo en la celda Noviembre, la macro debería ejecutarse 3 veces seguidas y por tanto 3 rotaciones.

No se si me explico lo bastante bien como para que se entienda. Aquí les dejo el código de la rotación por si les sirve de algo aunque creo que para lo que pregunto no es necesario.

Sub RotarImprimir()

'************************Evitar parpadeo, cálculos, eventos automáticos y saltos de pagina

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

'************************************ DEFINICIÓN DE VARIABLES.

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim ilongitud As Integer

'************************************ MEDIR CUÁNTAS GUARGIAS HAY EN CADA HORA.

Sheets("Horizontal").Select

For i = 1 To 30
ilongitud = 0
For j = 1 To 6
If Cells(i, j + 2) <> "" Then
ilongitud = ilongitud + 1
If Cells(i, j + 2) Like "*(*)*" Then
ilongitud = ilongitud - 1
End If
End If
Next
Cells(i, 9) = ilongitud
Next

'************************************ GIRAR EL CONTADOR DE CADA HORA.
'************************************* 1ª Columna
For i = 1 To 30

If Cells(i, 10) <= 1 Then
Cells(i, 10) = Cells(i, 9)

Else
If Cells(i, 10) <= Cells(i, 9) Then
Cells(i, 10) = Cells(i, 10) - 1

Else
Cells(i, 10) = Cells(i, 9)

End If
End If
Next


'************************************** Las demás columnas

For i = 1 To 30
For j = 1 To Cells(i, 9) - 1

If Cells(i, 10 + j - 1) = Cells(i, 9) Then
Cells(i, 10 + j) = 1
Else

Cells(i, 10 + j) = Cells(i, 10 + j - 1) + 1

End If
Next
Next

'****************************************GIRAR LAS LETRAS

For i = 1 To 30
For j = 1 To 6

If Cells(i, 9 + j) = "" Then
Cells(i, 15 + j) = Cells(i, j + 2)

Else
Cells(i, 15 + j) = Cells(i, Cells(i, 9 + j) + 2)

End If
Next
Next

End Sub[/CODE]

Espero que puedan ayudarme, ya que he encontrado información sobre como repetir una macro n veces pero no encuentro como hacerlo para que esa n dependa del valor de una celda que es una lista desplegable y que sería la que tengo para escoger el mes correspondiente.

Muchas gracias de antemano y un saludo.

Share this post


Link to post
Share on other sites

Hola Toldeman y en primer lugar muchas gracias por responder.

Creo que ese es mi problema exactamente, que no sé como asignar el valor numérico a cada uno de los meses y al ejecutar la macro coja el valor en función del mes elegido en la lista desplegable de la casilla "D1".

De esta forma si eligiera Septiembre en esa casilla la macro se ejecutaría 1 vez, si elijo Octubre se ejecutaría 2 veces (por tanto haría 2 rotaciones) y así sucesivamente.

Espero que puedas echarme una mano.

Un saludo.

Share this post


Link to post
Share on other sites

amigo @ssanced ya tienes 13 mensajes, no creo que sea necesario recordarte las normas del foro

¿Eres nuevo? Lee las Normas y Reglas del Foro

si deseas tener una respuesta mas acertada a tu consulta, definitivamente es necesario que subas tu archivo para ver exactamente que necesitas, cualquier solución que te den será inutil si no sabemos lo que quieres hacer, por ejemplo

De esta forma si eligiera Septiembre en esa casilla la macro se ejecutaría 1 vez, si elijo Octubre se ejecutaría 2 veces (por tanto haría 2 rotaciones) y así sucesivamente.

enero es 1, septiembre sería 9, es decir no tiene nada que ver con el mes como tal, depende de algo mas

suerte

Share this post


Link to post
Share on other sites

Hola y previamente pido perdón porque conozco las reglas, aunque como era algo genérico, pensé que era más sencillo explicarlo así y después aplicarlo yo a mi caso particular, subo un archivo a ver si así aclaro cosas.

Lo de Septiembre=1, Octubre= 2 ... etc, es simplemente porque el curso escolar comienza en septiembre de ahí el tema de que sea el primer mes.

En el archivo que subo se puede ver, y aclaro que la macro con la que me gustaría realizar el bucle y que me gustaría repetir es la Macro denominada Rotar y que se haría según el valor escogido en la celda D1 de la hoja Imprimir que es donde se puede seleccionar el mes.

Un saludo y espero si alguien se le ocurre algo.

Gracias.

Macro web.rar

Share this post


Link to post
Share on other sites

Hola incluye esta instruccion en tu macro y amplia/modifica segun tus necesidades.

Select Case Range("D1").Value
Case "SEPTIEMBRE"
variable = 2
Case "OCTUBRE"
variable = 3
End Select

Un saludo.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.

Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png