Jump to content

Consulta sobre ejecutar macro n veces en un rango de celdas


Recommended Posts

buenas noches, dispongo de una macro que me entrega para cada celda un valor distinto de 0 (dentro de un rango de celdas), al utilizar ciclo for, no obtengo todos los resultados inmediatamente (algunas celdas siguen con valor 0, por la naturaleza de los datos de entrada), por lo que debo ejecutar la macro varias veces hasta que se rellenen todos los datos del rango con un valor distinto de 0 

 

como puedo ejecutar la macro de forma automática varias veces, hasta que todos los valores de mi rango, sean distintos de 0?

 

muchas gracias

 

Link to post
Share on other sites

Hola @Galactico, en ese caso debes buscar como utilizar los ciclos while, te adjunto un código que recorre un rango de celdas colocando un número aleatorio y con el while indico que la instrucción debe repetirse hasta que el número que entrega sea mayor a 50.

Sub aleatoreo()
Dim c As Range

For Each c In Range("A1:A7")

    num = 0
    
    While num < 50 ' El ciclo while se repite si num es menor a 50
    
        num = Int((100 * Rnd) + 1) 'Generamos un número aleatorio
    
    Wend
    
    c = num

Next

End Sub

Saludos.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Crear macros Excel

  • Posts

    • Esto: If Dir(ActiveWorkbook.Path & "\tb_Cobros.txt") <> "" Then existe = True Sustituye a esto: ruta = ActiveWorkbook.Path archivo = Dir(ruta & "\*.*") Do Until archivo = "" coleccion_archivos.Add archivo archivo = Dir() Loop For i = coleccion_archivos.Count To 1 Step -1 If coleccion_archivos(i) = "tb_Cobros.txt" Then existe = True End If Next i  
    • Hola Seguro lo tuyo es un filtro avanzado... busca por aquí en el foro, sobre ese tema, hay variedad de soluciones que hemos aportado con el tiempo   Saludos 
    • Hola Si bien es cierto que esto se puede hacer con Vba, lo que intentas hacer es improductivo, desde el punto de vista sobre el uso adecuado de Excel Te dejo una alternativa para que puedas filtrar a gusto, sin necesidad de ir buscando dentro de la misma base de datos esos criterios de filtro   Saludos  Libro3.xlsx
    • Buenas, Estoy intentando realizar un macros que me lea los registros que cumplan una condición y me los pegue en otra hoja en la celda que le marco. He probado con esta macro, pero no me lo hace correcto me da error Sub Copiar_datos()  
    • Buenas tardes; -He conseguido algo con este código, imagino que se podrá mejorar . -Si a alguno se le ocurre algo mejor que me lo diga. Saludos. Private Sub btn_Txt_Click(): On Error Resume Next Dim ruta As String, i As Integer, existe As Boolean, coleccion_archivos As New Collection, archivo As String Dim Sep As String, x As Integer, z As Integer, Cuenta As Integer ruta = ActiveWorkbook.path archivo = Dir(ruta & "\*.*") Do Until archivo = "" coleccion_archivos.Add archivo archivo = Dir() Loop For i = coleccion_archivos.Count To 1 Step -1 If coleccion_archivos(i) = "tb_Cobros.txt" Then existe = True End If Next i If existe = True Then z = MsgBox("Ya existe el archivo de texto.¿Deseas eliminardo?", vbYesNo) If z = vbYes Then Kill ActiveWorkbook.path & "\tb_Cobros.txt" existe = False Else Open ActiveWorkbook.path & "\tb_Cobros.txt" For Append As #1 End If End If If existe = False Then Open ActiveWorkbook.path & "\tb_Cobros.txt" For Output As #1 MsgBox "El archivo txt fue creado" End If Cuenta = frm_Cobros.ListBox1.ListCount Sep = ";" Print #1, "Fecha: " & Date For x = 0 To Cuenta - 1 If Me.ListBox1.Selected(x) = True Then MsgBox Me.ListBox1.List(x), vbInformation, "Registro" TextBox0 = ListBox1.List(x, 0) TextBox50 = ListBox1.List(x, 1) TextBox51 = ListBox1.List(x, 2) TextBox4 = Format(ListBox1.List(x, 3), "dd/mm/yyyy") TextBox5 = ListBox1.List(x, 4) TextBox10 = ListBox1.List(x, 5) TextBox6 = ListBox1.List(x, 6) TextBox11 = ListBox1.List(x, 7) TextBox7 = ListBox1.List(x, 8) TextBox8 = ListBox1.List(x, 9) TextBox12 = ListBox1.List(x, 10) Print #1, TextBox0 & Sep & TextBox50 & Sep & TextBox51 & Sep & TextBox4 & Sep & TextBox5 & Sep & TextBox10 & Sep & TextBox6 & Sep & TextBox11 & Sep & TextBox7 & Sep & TextBox8 & Sep & TextBox12 End If Next x Print #1, "-" Close #1 End Sub  
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy