es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo elimino las entradas de todas las hojas de cálculo al mismo tiempo?

Tengo código para pegar un valor en todas las hojas de un libro de trabajo (funciona, pero es un poco lento).

Luego, cuando se elimina un valor, debería eliminar esa fila de todas las demás hojas de cálculo, pero no hace nada.

Al depurar, parece que nunca se cumple la condición Application.CountBlank(irg) = 1, aunque IRG debería estar en blanco al eliminar la celda de destino y debería ejecutarse el evento de cambio de hoja de cálculo.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Const cCol As String = "A"
Const fRow As Long = 2

Dim crg As Range
Dim ddFound As Range
Dim ws As Worksheet
Dim sh As Worksheet
Dim outpt As String

Dim i As Integer

Application.EnableEvents = False

Set crg = Columns(cCol).Resize(Rows.Count - fRow + 1).Offset(fRow - 1)
Dim irg As Range: Set irg = Intersect(crg, Target)
Dim sraddress As String

Dim dws As Worksheet
Dim ddcrg As Range

For Each ws In ActiveWorkbook.Worksheets

    Set ddcrg = ws.Columns(cCol)
    sraddress = irg.Value2
    Set ddFound = ddcrg.Find(sraddress, , xlValues, xlWhole)

    Application.ScreenUpdating = False

    If Application.CountBlank(irg) = 0 Then

        If ddFound Is Nothing Then
            irg.Select:   ActiveCell = irg.Value2
            irg.Copy
            ws.Range(irg.Address) = irg.Value2
            Application.CutCopyMode = False

        ElseIf Application.CountBlank(irg) = 1 And ddFound Is Nothing Then
            Sheets(Array("Statistics", "January")).Select
            ddFound.EntireRow.Delete Shift:=xlShiftUp

        End If
    End If

Next ws

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código está diseñado para hacer dos cosas: pegar un valor en todas las hojas de cálculo de un libro y eliminar esa fila de cada otra hoja de cálculo cuando se borra un valor. La primera parte parece estar funcionando, pero la segunda parte no lo está.

    Al depurar, parece que la condición Application.CountBlank(irg) = 1 nunca se cumple. Incluso cuando una celda se borra y debería estar en blanco, la condición no se cumple. Esto hace que la acción de eliminar no se ejecute.

    Puede ser útil verificar el valor de irg en el depurador para asegurarse de que se esté estableciendo correctamente. Además, podría valer la pena probar una condición diferente para verificar si una celda está en blanco, como Len(Trim(irg)) = 0.

    También puede haber un problema con la lógica del código. La condición ddFound Is Nothing se verifica dos veces, lo cual puede no ser necesario. Sería conveniente revisar la lógica para simplificarla y asegurarse de que todas las condiciones se estén verificando correctamente.

Comments are closed.