Jump to content
  • Crear macros Excel

  • Posts

    • Buenas ,  soy nuevo en Macros  seguro que el codigo que te paso es muy largo  y no muy limpio y se podra hacer con la mitad de codigo (como te digo desconozco  muchos objetos de excel) , pero por aportar mi granito te paso mi codigo comentado en cada linea.  Espero que alguna idea puedas  aprovechar. Sub ultima_cada_fila() ' ejemplo con tabla nombre "Tabla1" , rango de la tabla $D$2:$AG$10 Dim rango, primera_celda, Ultima_Celda, primera_letra, ultima_letra, primer_n, Ultimo_n, c As String Dim numero_columnas, i, ii, b As Integer rango = Replace(Range("Tabla1").CurrentRegion.Address, "$", "") ' obtenemos el rango de la tabla eliminado los $ (D2:AG10) numero_columnas = Range(rango).Columns.Count ' numero de las columnas de la tabla (30) primera_celda = Mid(rango, 1, InStr(1, rango, ":") - 1) ' cogemos la direccion de la 1 celda, Desde donde trabajara el offset(D2) Ultima_Celda = Mid(rango, Len(primera_celda) + 2, Len(rango)) ' cogemos la direccion de la 2 celda(AG10) For i = 1 To Len(primera_celda) ' proceso para desglosar la letra y el numero de la 1 celda(D2) c = Mid(primera_celda, i, 1) ' analizamos caracter a caracter If IsNumeric(c) Then ' si el caranter es un numero .. primer_n = primer_n & c ' capturamos el numero(2) Else primera_letra = primera_letra & c ' capturamos el caracter(D) End If Next For i = 1 To Len(Ultima_Celda) ' proceso para desglosar la letra y el numero de la 2 celda(AG10) c = Mid(Ultima_Celda, i, 1) ' analizamos caracter a caracter If IsNumeric(c) Then ' si el caranter es un numero .. Ultimo_n = Ultimo_n & c ' capturamos el numero (1,0) Else ultima_letra = ultima_letra & c ' capturamos el caracter(A,G) End If Next b = 0 For i = primer_n To Ultimo_n - 1 ' proceso que recorre las filas b = b + 1 For ii = primer_n To numero_columnas + 1 ' proceso que recorre las columnas por cada fila If Range(primera_celda).Offset(b, ii - primer_n).Value = "" Then ' si la celda esta vacia .. Range(primera_celda).Offset(b, ii - primer_n).Select ' seleccionamos la celda vacia MsgBox Selection.Address ' muestra la direccion de la celda vacia Exit For ' salimos de la busqueda ya que encontremos la celda vacia End If Next Next Suerte.
    • Si, evalua siempre la fila 3, porque estaba haciendo pruebas con distintas filas a mano. Con tu codigo me hace lo mismo siempre me cuenta 33 que es el numero de columnas que tiene la Tabla. Yo creo que tiene que ver con el que es una Tabla como tal. He probado fuera de esa tabla con el mismo codigo (fila 38, que está fuera del rango de la Tabla) y si que funciona como se espera.   Gracias de todos modos
    • Tu código evalúa siempre la fila 3, prueba con el código adjunto. Suponiendo que la variable Fila contiene el número de fila a evaluar: UltCol = Datos.Cells(Fila, Columns.Count).End(xlToLeft).Column  
    • Buenos días,    Pues sí, era eso, yo hacía la misma fórmula pero no se me ocurrió poner "/100" al final y es ahí donde estaba el fallo.... 😅   Perdonad, soy un poco novatilla en excel y quitando algunas fórmulas, para el resto no sé mucho más   Mil gracias! 
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy