Programación Excel VBA, botón vinculado a una fila

Resuelto
Hola,

Estoy buscando una solución a mi problema en diferentes foros, pero en vano. He creado un documento de Excel para programar diferentes pedidos y las fechas de entrega. Para esto, he añadido un botón "programar" al inicio de cada fila para eliminar la fila en la que se encuentra. Pero el botón está programado con el número de celda, lo que significa que si añado una línea en el medio, el botón no estará frente a la línea correcta.

Espero haber sido claro, pero en resumen, necesitaría eliminar las columnas C a G, pero únicamente en la fila del botón. No sé si esto es posible.

Gracias de antemano por tu respuesta.

Configuración: Windows / Firefox 80.0

3 respuestas

  1. Colaborador
    Hola, no entiendo la relación entre tu primer y segundo párrafo.
    Me pregunto si es una buena idea tener un botón por línea.
    ¿Puedes compartir tu archivo?
    0
    1. Hola, he respondido a su mensaje de abajo :)
      0
  2. Hola, soy consciente de que no soy muy claro en mis comentarios, así que intentaré aportar algunas precisiones.

    Primero, les pongo a disposición el enlace del Excel porque no he conseguido integrarlo de otra forma:
    https://www.cjoint.com/c/JIxinC7lWYa

    En mi hoja de pedido, se puede ver al cliente SNCF (que es un ejemplo) que hay diferentes pedidos, diferentes fechas, etc. Delante de cada línea hay un botón afiliado a la línea. Cuando mi pedido es entregado, sería más cómodo para mí borrar mis datos de la tabla en las celdas que van de C a G. Mi problema es el siguiente. Si algún día tengo un pedido adicional, necesitaría añadir una línea en esta tabla y, por lo tanto, cambiar el número de las celdas. El botón no quedando en su celda asignada, el código VBA ya no sería correcto ya que me borraría los datos de otra celda.

    Por lo tanto, me gustaría, o bien poder vincular mi botón a una celda, sin importar la adición o eliminación de líneas, los botones permanecen en el número de celda correcto que se les ha asignado. O saber si es posible programar el botón para que borre los datos de su celda, pero sin tener que poner los números en Range("C32:G32").

    Muchas gracias por su respuesta.
    0
    1. Colaborador

      Private Sub CommandButton1_Click() Dim fila As Long fila = Me.CommandButton1.TopLeftCell.Row Cells(fila, "C").Resize(1, 5).ClearContents End Sub
      0
    2. Colaborador
      @yg_beo bien, teniendo en cuenta que el botón está en la columna A:
      Private Sub CommandButton10_Click() Me.CommandButton10.TopLeftCell.Offset(0, 2).Resize(1, 5).ClearContents End Sub
      0
    3. @yg_beMuchas gracias, pero después de probarlo, eso borra la primera línea de mi primera tabla, pero no la línea donde se encuentra el botón.
      Voy a intentar ver si con su programa no puedo encontrar una alternativa, pero si tuviera una solución a mi problema, me ayudaría enormemente.
      Gracias por su ayuda.
      0
    4. Colaborador
      @PANTPUFLE¿Puedes mostrar tu código modificado? En mi caso, todo va bien.
      0
  3. Colaborador
    otro método sería utilizar una sola macro y asociar todos los botones a esta macro.
    Sub boton() ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(0, 2).Resize(1, 5).ClearContents End Sub

    incluso puedes copiar el botón en todas las filas.
    0


    1. He intentado con el último método, me dice que no conoce "Buttons".
      "No se puede leer la propiedad Buttons de la clase Worksheet"
      0
    2. @yg_beDe acuerdo, voy a mirar eso. Muchas gracias por toda su ayuda de todos modos :)
      0
    3. @yg_be¡Funciona muy bien, muchas gracias!
      0