none
Fallo en programación de Visual Basic en excel RRS feed

  • Pregunta

  • Buenas tardes,

    Me ha tocado hacer un pagina de excel para calculo de presupuesto, no es nada muy complicado, un par de listas desplegables dependientes y una función de buscarv con dos criterios (los de las listas) para que me devuelva un peso, todo esto lo tengo ya hecho pero encontré la siguiente función  para poner en blanco la segunda lista si cambiaba el perfil de la primera lista para Microsoft Visual Basic: (En las listas desplegables del Visual Basic selecciono "Worksheet" y "Change":

    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target = Range("A2") Then
        Range("B2").Value = ""
    End If
     
    End Sub

    La verdad sin problemas pero al intentar ampliar la formula para que haga lo mismo en las demás filas, he puesto lo siguiente:

    Private Sub Worksheet_Change(ByVal Target As Range)

     

    If Target = Range("B14") Then

        Range("C14").Value = ""

    End If

    If Target = Range("B15") Then

        Range("C15").Value = ""

    End If

    If Target = Range("B16") Then

        Range("C16").Value = ""

    End If

    If Target = Range("B17") Then

        Range("C17").Value = ""

    End If

    If Target = Range("B18") Then

        Range("C18").Value = ""

    End If

    If Target = Range("B19") Then

        Range("C19").Value = ""

    End If

    If Target = Range("B20") Then

        Range("C20").Value = ""

    End If

    If Target = Range("B21") Then

        Range("C21").Value = ""

    End If

    If Target = Range("B22") Then

        Range("C22").Value = ""

    End If

    If Target = Range("B23") Then

        Range("C23").Value = ""

    End If

    If Target = Range("B24") Then

        Range("C24").Value = ""

    End If

    If Target = Range("B25") Then

        Range("C25").Value = ""

    End If

    If Target = Range("B26") Then

        Range("C26").Value = ""

    End If

    If Target = Range("B27") Then

        Range("C27").Value = ""

    End If

    If Target = Range("B30") Then

        Range("C30").Value = ""

    End If

    If Target = Range("B31") Then

        Range("C31").Value = ""

    End If

    If Target = Range("B32") Then

        Range("C32").Value = ""

    End If

    If Target = Range("B33") Then

        Range("C33").Value = ""

    End If

    If Target = Range("B34") Then

        Range("C34").Value = ""

    End If

    If Target = Range("B35") Then

        Range("C35").Value = ""

    End If

    If Target = Range("B36") Then

        Range("C36").Value = ""

    End If

    If Target = Range("B37") Then

        Range("C37").Value = ""

    End If

    If Target = Range("B38") Then

        Range("C38").Value = ""

    End If

    If Target = Range("B39") Then

        Range("C39").Value = ""

    End If

    If Target = Range("B40") Then

        Range("C40").Value = ""

    End If

    If Target = Range("B41") Then

        Range("C41").Value = ""

    End If

    If Target = Range("B42") Then

        Range("C42").Value = ""

    End If

    If Target = Range("B43") Then

        Range("C43").Value = ""

    End If

    If Target = Range("B44") Then

        Range("C44").Value = ""

    End If

    If Target = Range("B45") Then

        Range("C45").Value = ""

    End If

    If Target = Range("B46") Then

        Range("C46").Value = ""

    End If

    If Target = Range("B47") Then

        Range("C47").Value = ""

    End If

    If Target = Range("B48") Then

        Range("C48").Value = ""

    End If

    If Target = Range("B49") Then

        Range("C49").Value = ""

    End If

    If Target = Range("B52") Then

        Range("C52").Value = ""

    End If

    If Target = Range("B53") Then

        Range("C53").Value = ""

    End If

    If Target = Range("B54") Then

        Range("C54").Value = ""

    End If

    If Target = Range("B55") Then

        Range("C55").Value = ""

    End If

    If Target = Range("B56") Then

        Range("C56").Value = ""

    End If

    If Target = Range("B57") Then

        Range("C57").Value = ""

    End If

    If Target = Range("B58") Then

        Range("C58").Value = ""

    End If

    If Target = Range("B59") Then

        Range("C59").Value = ""

    End If

    If Target = Range("B60") Then

        Range("C60").Value = ""

    End If

    If Target = Range("B61") Then

        Range("C61").Value = ""

    End If

    If Target = Range("B62") Then

        Range("C62").Value = ""

    End If

    If Target = Range("B63") Then

        Range("C63").Value = ""

    End If

    If Target = Range("B64") Then

        Range("C64").Value = ""

    End If

    If Target = Range("B65") Then

        Range("C65").Value = ""

    End If

    If Target = Range("B66") Then

        Range("C66").Value = ""

    End If

    If Target = Range("B67") Then

        Range("C67").Value = ""

    End If

    If Target = Range("B68") Then

        Range("C68").Value = ""

    End If

    End Sub

    Funciona, pero con matices, cada vez que borro alguna celda o modifico algo se queda medio pillado y al darle al "ESC" (una o dos veces) me salta una ventana de Microsoft Visual Basic que dice "La ejecución del código se ha detenido" y solo se para si Finalizo. Posiblemente será una tontería pero no tengo ni idea de programación, agradecería si alguien pudiese indicarme lo que esta mal y como solucionarlo.

    Gracias.

    Un saludo.

    • Cambiado Enrique M. Montejo jueves, 19 de mayo de 2016 14:50 Programación en Excel con Visual Basic para Aplicaciones (VBA)
    jueves, 19 de mayo de 2016 11:42