Aplicar Macro a un Columna Automáticamente Excel

Estoy intentando aplicar un macro a una columna para obtener el precio total de un producto por la cantidad, es decir:

Lo que deseo, es aplicar una macro a toda la columna D para que cuando exista datos en la columna B y C automáticamente me muestre el total.

1 Respuesta

Respuesta
2

Te anexo la macro para que la pongas en los eventos de tu hoja.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Columns("B:C")) Is Nothing Then
        For Each r In Target.Rows
            Cells(r.Row, "D") = Cells(r.Row, "B") * Cells(r.Row, "C")
        Next
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Saludos. Dante Amor

Recuerda valorar la respuesta.

Te anexo una actualización, por si escribes textos en la columna B o C

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Columns("B:C")) Is Nothing Then
        For Each r In Target.Rows
            If IsNumeric(Cells(r.Row, "B")) And IsNumeric(Cells(r.Row, "C")) Then
                Cells(r.Row, "D") = Cells(r.Row, "B") * Cells(r.Row, "C")
            End If
        Next
    End If
End Sub

COLUMNAS:  G = E * F

Hay un pequeño detalle. Cuando le pongo la formula me calcula hasta la ultima fila de la columna G. Y debe cumplir esta condición:

  • Calcular solo cuando exista data en la columna E Y F.

También me ocurre algo extraño:

  • Cuando selecciono toda la columna E Y F. el Excel se congela.
  • Cuando le pongo valor ala columna E Y F el resultado solo se calcula cuando selecciono las celda E Y F. Es decir si yo pongo 5 en cantidad y 6 en precio no calcula nada, hasta que yo seleccione con el mouse dichas celdas.

Gracias

¿Puedes decirme qué macro pusiste y dónde la pusiste?

En la pregunta original mencionaste las columnas B, C y D, ahora quieres otras columnas, ¿ya modificaste la macro?

En la macro que te envié el evento es este:

Private Sub Worksheet_Change(ByVal Target As Range)

Por lo que comentas, me parece que cambiaste el evento a este:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Revisa bien la macro que te envié y las instrucciones que te puse.

Si ya cambiaste las columnas, no debes tener problemas, si no sabes cómo cambiarlas, te anexo la macro actualizada:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Columns("E:F")) Is Nothing Then
        For Each r In Target.Rows
            If IsNumeric(Cells(r.Row, "E")) And IsNumeric(Cells(r.Row, "F")) Then
                Cells(r.Row, "G") = Cells(r.Row, "E") * Cells(r.Row, "F")
            End If
        Next
    End If
End Sub

IMPORTANTE! El evento de la hoja es Change.


Saludos. Dante Amor

Recuerda valorar la respuesta.

¡Gracias! Vaya tenias razón. Eso era.

Dante, me olvide decirte. No se si en vez de poner toda la columna solo hace el calculo en los primeros 100 registros. Gracias

Cambia en la macro esto:

Columns("E:F")

Por esto:

Ragne("E1:F100")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas