Macro para copiar filas con condición en otras hojas
Tengo una macro que colorea las filas dependiendo de una condición para que luego otra macro las pase a otras hojas con el mismo nombre de la condición dependiendo del color que tengan, las macros son estas:
Sub ColorearFilas() Dim n As Integer Dim reg As Excel.Range For n = 6 To 10000 If Range("E" & n) = "Condicion1" Then Worksheets("Hoja1").Range("A" & n, "M" & n).Interior.Color = RGB(0, 255, 0) Else If Range("E" & n) = "Condicion2" Then Worksheets("Hoja1").Range("A" & n, "M" & n).Interior.Color = RGB(192, 192, 192) Else If Range("E" & n) = "Condicion3" Then Worksheets("Hoja1").Range("A" & n, "M" & n).Interior.Color = RGB(128, 128, 128) Else End If End If End If Next End Sub
Sub copiafila_Con_Condicion1() Set h1 = Sheets("Hoja1") Set h2 = Sheets("Condicion1") h1.Select ini = "A" fin = "M" For i = 2 To h1.Range(ini & Rows.Count).End(xlUp).row si = 0 For j = 1 To Range(fin & 1).Column Cells(i, j).Select If Cells(i, j).Interior.ColorIndex = 4 Then si = 1 Else si = 0 End If Next If si = 1 Then Range(ini & i & ":" & fin & i).Select h1.Range(ini & i & ":" & fin & i).Copy h2.Range(ini & h2.Range(ini & Rows.Count).End(xlUp).row + 1) Selection.Delete Shift:=xlUp i = i - 1 End If Next End Sub
Tengo tres problemas con esto, el primero es que esta limitado a 10000 registros, el segundo es que tarda demasiado ya que va revisando condición por condición si tengo 10000 registros revisa los 10000 tres veces y el tercer problema es que no se como poner para que pase los registros que no tienen datos en la columna "B" y los pase a otra hoja llamada "SIN DATOS"
Necesito que no tarde tanto ya que aveces se cuelga (primero porque colorea los 10000 registros por condición y segundo porque revisa condición por condición los 10000 registros, es decir pasa 4 veces los 10000 registros) y pasar los registros que no tienen datos a otra hoja.
Hola ElsaMatildequisiera hacerle una consulta adicional de ser posible, quisiera saber si en un formulario se puede agregar un textbox donde se registre un dato cualquiera y este dato reemplace en un rango de la hoja activa, agradeceré el apoyo con dicha información - Cristian Rodriguez