Saltar al contenido

Condiosion para detener un proceso y continuar con otra instruccion


Recommended Posts

publicado

 

tengo las siguientes intrucciones:

 Range("A:E").Select
    
    ActiveWorkbook.Worksheets("RevicionSubCta").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("RevicionSubCta").Sort.SortFields.Add Key:=Range( _
        "B2:B" & u & ""), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("RevicionSubCta").Sort
        .SetRange Range("A1:E" & u & "")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

     Range(Range("A1"), Selection.End(xlDown)).Offset(1, 0).EntireRow.Delete
     
    Columns("B:B").Delete

primero determino un rango  lo organiza , pero previo elimina las filas que no cumplen cierta condición, en esta eliminación puede resultar que solo quede una sola fila o no quede ninguna, la ideas  es que si queda una fila o ninguna la instruccion   "Range(Range("A1"), Selection.End(xlDown)).Offset(1, 0).EntireRow.Delete" , no se ejectua correctamente, es por eso que necesito una condicion que si la suma de las filas de la columna A>2 entonces se ejecute la intruccion " Range(Range("A1"), Selection.End(xlDown)).Offset(1, 0).EntireRow.Delete",  de lo contrario se salte esta intrccucion y ejecute la siguiente accion "Columns("B:B").Delete"

publicado

Buenas tardes, en este archivo en realidad son de tres hojas, una hoja tengo la base de datos sacada del sotfware contable (normalmente las cuentas son de 8 digitos) , y en otra hoja tengo una base del plan contable parametrizado para diferentes informes, la idea de la macro es que primero filtre las cuentas a niver de 6 digitos con el plan de cuentas, y le coloca que la cuenta a nivel de 6 digitos primero en la columna "B" no les coloque nada, y "no existe" en la columna "E" a las que no esten en el plan general, y a las que si esten les coloque  en la colunma "B" una x y en la columna "E" el valor a la derecha del plan contable, luego filtre las x y las elimine, quedando solo aquellas que dicen no existe en la columna "E", luego los valores que no existen vuelve a realizar un filtro pero ahora a nivel de 4 digitos, en ese caso siempre las va encontrar, y les coloque todos los parametros que esta tiene en el plan general, y las adicione al plan general, para cuando realice los informes contables no aparezcan cuentas n/a, ahora bien, se puede dar el caso que todas las cuentas existan o que por lo menos no exista una, como en este caso, pero cuando se realiza el filtro para eliminar las que tienen x y luego realizar la verificacion a 4 digitos la macro rellena con error y rellena todas las filas hacia abajo con el error, se requiere que la macro cuando encuetre uno no tenga problema y ese lo rellene y lo pegue en la hoja general, pero si no tiene ninguno (porque todas las cuentas existen en el plan general) entonces se detenga o realice la siguiente tarea programada.

 

Sheets("RevicionSubCta").Select
    Range("D2").Select
    Range(Range("D2"), Range("C2").End(xlDown).Offset(0, 1)) = "=+IFERROR(VLOOKUP(RC[-2],Mapa!C[-2]:C[-1],2,0),""NO EXISTE SUBCUENTA"")"
    Range(Range("D2"), Range("C2").End(xlDown).Offset(0, 1)).Copy
    Range(Range("D2"), Range("C2").End(xlDown).Offset(0, 1)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    Sheets("Mapa").Select
    
        
    Range("A1:CD1").Select
    Selection.Copy
    Sheets("RevicionSubCta").Select
    Range("A1:CD1").PasteSpecial
    
    u = Range("C1048576").End(xlUp).Row + 1
    Range("C1048576").End(xlUp).Offset(0, -2) = "x"
    
    
    Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    
    Range(Range("B2"), Range("A2").End(xlDown).Offset(0, 1)) = "=+IF(LEFT(RC[3],19)=""NO EXISTE SUBCUENTA"","""",""x"")"
 
    
    Range(Range("B2"), Range("A2").End(xlDown).Offset(0, 1)).Copy
    Range(Range("B2"), Range("A2").End(xlDown).Offset(0, 1)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    Application.CutCopyMode = False
    
    Range("A1048576").End(xlUp).Offset(1, 1) = "a"
    u = Range("B1048576").End(xlUp).Row
 
    Range("A:E").Select
    
    ActiveWorkbook.Worksheets("RevicionSubCta").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("RevicionSubCta").Sort.SortFields.Add Key:=Range( _
        "B2:B" & u & ""), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("RevicionSubCta").Sort
        .SetRange Range("A1:E" & u & "")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

     Range(Range("A1"), Selection.End(xlDown)).Offset(1, 0).EntireRow.Delete
     
    Columns("B:B").Delete
    
    Range(Range("D2"), Range("C2").End(xlDown).Offset(0, 1)) = "=+IF(VLOOKUP(VALUE(LEFT(RC2,4)),Mapa!R1C2:R6811C82,(MATCH(R1C,Mapa!R1,0)-1),0)>0,VLOOKUP(VALUE(LEFT(RC2,4)),Mapa!R1C2:R6811C82,(MATCH(R1C,Mapa!R1,0)-1),0),"" "")"
    
    Range("D2").Select
    Range(Selection, Selection.End(xlDown)).Copy
    Range("E2:CD2").Select
    
    ActiveSheet.Paste
    
    u = Range("A1048576").End(xlUp).Row
    Range("A2:A" & u & "").FormulaR1C1 = "=+LEN(RC[1])"
    
    
    
    Range("A2:CD" & u & "").Select
    Selection.Copy
    Sheets("Mapa").Select
    y = Range("A1048576").End(xlUp).Row + 1
    Range("A" & y & "").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    
    Sheets("RevicionSubCta").Delete
 

verificacion cuentas.xlsx

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.