** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - VBA Eliminar y Añadir Celdas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoVBA Eliminar y Añadir Celdas

 Responder Responder
Autor
Mensaje
Axi Ver desplegable
Nuevo
Nuevo


Unido: 10/Junio/2020
Localización: Gipuzkoa
Estado: Sin conexión
Puntos: 18
Enlace directo a este mensaje Tema: VBA Eliminar y Añadir Celdas
    Enviado: 10/Junio/2020 a las 17:35
Muy buenas!
Es la primera vez que uso VBA y necesito que me ayudéis un poco si es posible. El documento en el que estoy trabajando es una especie de checklist para crear una factura, es decir, el documento tiene dos pestañas, en la primera aparece todos los elementos con su casilla de control de formulario y en la otra pestaña aparece la factura total.
Mi objetivo es que todos los elementos que vaya haciendo click en la primera pestaña, se vaya añadiendo en la segunda pestaña. Por ahora, lo que he conseguido es que cuando haga click en la casilla de un elemento, que se inserte una nueva celda en la segunda pestaña y que se añada la información del elemento. Pero lo que no consigo es que a la hora de quitar el click, se elimine toda la fila en la que aparece ese elemento.

Espero haberme explicado bien...muchisimas gracias y que tengais un buen día


Editado por Axi - 10/Junio/2020 a las 22:24
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Enlace directo a este mensaje Enviado: 10/Junio/2020 a las 17:48
Hola Axi y Bienvenido al foro

Que código utilizas para agregar la fila después del click, mira la tabla, si te aparece, debes de crear una consulta de eliminación o un recordset para volverlo a quitar

PD: mira las normas del foro y corrige el tema pues las incumple, saludos.


Editado por emiliove - 10/Junio/2020 a las 17:49
Arriba
Dabellaso Ver desplegable
Asiduo
Asiduo


Unido: 18/Noviembre/2012
Localización: España
Estado: Sin conexión
Puntos: 338
Enlace directo a este mensaje Enviado: 10/Junio/2020 a las 18:07
Hola

Al hablar de documento me supongo que estás trabajando en Word, pero lo de las celdas me suena a Excel.

Podrías indicar algo más?

Además del programa en el que estás, indícanos por ejemplo, como agregas las celdas en la segunda pestaña, para poder hacer la operación inversa del mismo modo.

saludos
El saber no ocupa lugar, sólo tiempo
Arriba
Axi Ver desplegable
Nuevo
Nuevo


Unido: 10/Junio/2020
Localización: Gipuzkoa
Estado: Sin conexión
Puntos: 18
Enlace directo a este mensaje Enviado: 10/Junio/2020 a las 22:28
Muchisimas gracias por el aviso!! Soy nuevo en esto y la verdad es que no me habia dado cuenta de las normas... Os paso lo que he hecho por ahora si quereis.

Public Sub SCOPE()
Dim Fila As Long
Dim Celda As Range
Dim Rango As Range
Dim A As Range
Dim B As Long
    If Worksheets("Hoja1").Range("A7").Value = True Then
        A = Worksheets("Hoja1").Range("A7").Value
        Fila = Worksheets("Hoja2").Range("A" & Rows.Count).End(xlUp).Row + 1
        Worksheets("Hoja2").Cells(Fila, 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow

        Worksheets("Hoja2").Cells(Fila, 1) = Worksheets("Hoja1").Range("B7")
        Worksheets("Hoja2").Cells(Fila, 2) = Worksheets("Hoja1").Range("C7")

    Else                    
        With Worksheets("Hoja2")
            B = .Find(A, LookIn:=x1Values)
            If Not B Is Nothing Then
                LUGAR = B.Address
                Do
                    B.Select
                    Selection.EntireRow.Delete
                Loop While Not B Is Nothing
            End If
        End With
    End If
End Sub

Esto ha sido lo que he hecho hasta ahora y la verdad es que no se como hacer la parte final...

Muchisimas gracias por vuestra ayuda!!

Arriba
Axi Ver desplegable
Nuevo
Nuevo


Unido: 10/Junio/2020
Localización: Gipuzkoa
Estado: Sin conexión
Puntos: 18
Enlace directo a este mensaje Enviado: 10/Junio/2020 a las 22:35
La verdad es que al principio no me he explicado bien pero si, es un Excel lo que estoy haciendo. El excel tiene dos pestañas.
  • Primera pestaña: Estarán todos los elementos con sus casillas de control de formulario (donde estan situadas en la columna A)
  • Segunda pestaña: Se irá formando la factura, donde meteré la informacion del elemento (columna B de la primera pestaña) y el precio del elemento (columna C de la pestaña)

Muchas gracias y que tengais un buen día
Arriba
Axi Ver desplegable
Nuevo
Nuevo


Unido: 10/Junio/2020
Localización: Gipuzkoa
Estado: Sin conexión
Puntos: 18
Enlace directo a este mensaje Enviado: 11/Junio/2020 a las 17:22
Muy buenas gente!!
Muchisimas gracias por vuestra ayuda! La verdad es que me habeis ayudado mogollón! He ido mejorando el excel poco a poco y me ha surgido una duda pequeña... En la factura que hay en la segunda pestaña ("Hoja2"), tengo que separar lo que son ACCESORIOS REQUERIDOS y ACCESORIOS OPCIONALES...
  1. Por una parte me gustaría que me preguntara si el accesorio es opcional o no cada vez que hago click en la casilla de control de formulario. De la manera que lo he hecho yo, me pregunta todo al final y es imposible saber de que celda o accesorio me esta hablando. En caso de que no sea posible la opción en la que me el programa me pregunte cada vez que hago click en la casilla, hay alguna manera en la que el texto que aparece en el cuadro del mensaje se modifique dependiendo la celda?
  2. Me da un error 400 y la verdad es que no se donde tengo el error o que es lo que falla...
Esto es lo que he hecho yo:

Sub FACTURA()
    Dim n As Long
    Dim m As Long
    Dim v As Long
    Dim Fila As Long
    Dim Pregunta As String
    Dim ACC As Long
    Dim ACC_O As Long
    m = 1
    n = m + 2
    v = 2
    Worksheets("Hoja2").Range("A3") = "ACCESORIOS OPCIONALES"
    Worksheets("Hoja2").Range("A1") = "ACCESORIOS NORMAL"
    Worksheets("Hoja2").Range("A2") = "TOTAL ACCESORIOS NORMAL"
    Sheets("Hoja1").Select
    Worksheets("Hoja2").Range("A2:A10").Clear
    Worksheets("Hoja2").Range("B2:B10").Clear
    
    For v = 2 To Range("A" & v).End(xlDown).Row
        If Range("A" & v).Value = True Then
            Pregunta = MsgBox("Es un Accesorio Opcional?", vbYesNo + vbQuestion, "ACCESORIOS")
            If Pregunta = vbNo Then
                ACC = Worksheets("Hoja2").Range("A" & m).Value
                Worksheets("Hoja2").Cells(ACC, 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
                m = m + 1
                Worksheets("Hoja2").Range("A" & m).Value = Range("C" & v).Value
                Worksheets("Hoja2").Range("B" & m).Value = Range("D" & v).Value
            Else
                ACC_O = Worksheets("Hoja2").Range("A" & n).Value
                Worksheets("Hoja2").Cells(ACC_O, 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
                n = n + 1
                Worksheets("Hoja2").Range("A" & n).Value = Range("C" & v).Value
                Worksheets("Hoja2").Range("B" & n).Value = Range("D" & v).Value
            End If
        Else
            v = v + 1
        End If
    Next v
    MsgBox "Done!"
End Sub


He seguido con la respuesta que vosotros me habeis dicho pero he hecho unas modificaciones:
v= es el valor de todos los accesorios que aparecen en la primera pestaña
m= es el valor donde irán añadiendo todos los accesorios necesarios
n= es el valor de la celda donde irán todos los accesorios opcionales.

Los accesorios irán uno detras de otro pero luego, como bien se puede ver al princípio, entre los accesorios requerido y accesorios opcional iran varios títulos.

Espero haberme explicado bien...Que tengais un buen dia!


Editado por Axi - 11/Junio/2020 a las 18:02
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable