Hacer correr macro cuando cambie el valor de una celda

Como hago para que cuando cambie el valor de una celda (G2) arranque una macro "Sub Nuevo_Codigo()" que está en un modulo

1 respuesta

Respuesta
1

En el evento worksheetchange de la hoja

Sigue las Instrucciones para poner la macro en 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               

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
    If Not Intersect(Target, Range("G2")) Is Nothing Then
        Nuevo_Codigo
    End If
End Sub

Este es el código que funcionaba en la hoja directamente, pero al pasarlo a módulo,

No es lo mismo.

No sé como hacer que corra cuando cambie la celda G2

Sub Nuevo_Codigo()
'Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
ActiveSheet.Unprotect "m"
'If Target.AddressLocal = "$G$2" Then
Range("A1:F1") = ""
'Range("B1") = ""
Set l2 = Workbooks("TARIFAS VARIOS PROVEEDORES ACTUALIZADO.xlsm")
For Each h In l2.Sheets
Set b = h.Range("G:G").Find(Target)
If Not b Is Nothing Then
ActiveSheet.Unprotect "m"
Range("A1") = h.Name
Range("B1") = h.Cells(b.Row, "A")
Range("C1") = h.Cells(b.Row, "B")
Range("F1") = h.Cells(b.Row, "D")
Exit For
End If
Next
If Range("C1").Value = "" Then
MsgBox "NO SE ENCONTRÓ ÉSTE ARTICULO" & Chr(10) & Chr(10) & "REVISE EL CÓDIGO" _
& Chr(10) & Chr(10) & "NO PASO NADA", vbInformation, "CÓDIGO NO ENCONTRADO"
Exit Sub
End If
If Range("C59").Value <> "" Then
MsgBox "ALBARÁN COMPLETO," & Chr(10) & Chr(10) & " CAMBIE A OTRO ALBARÁN" _
& Chr(10) & Chr(10) & "NO PASO NADA", vbInformation, "ALBARÁN COMPLETO"
Exit Sub
End If

'End If
'Application.ScreenUpdating = False
'If Target.AddressLocal = "$G$2" Then
Range("C14").Select
'Busca la primera celda vacia a partir de C14
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
'Situa el cursor 2 columnas a la derecha para introducir datos
ActiveCell.Offset(0, 2).Select
'Asigna un valor a través de un cuadro a la celda activa
'con un valor por defecto de "1"
ActiveCell.Value = Val(InputBox("Cantidad", "Cantidad", "1", 900, 200))
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
'Si el valor de entrada es "0" salirse
If ActiveCell.Value = 0 Then
Range("G2").Select
Exit Sub
Else
'Situa el cursor 3 columnas a la izquierda((B:B) para introducir datos
ActiveCell.Offset(0, -3).Select
Range("B1:D1").Copy
Selection.PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, 8).Select
Range("J1:J1").Copy
Selection.PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, -4).Select
Range("F1:F1").Copy
Selection.PasteSpecial Paste:=xlValues
'ActiveCell.Offset(0, 2).Select
'ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-2]*(1-RC[-1])"
End If
Range("G2").Select
Exit Sub
'End If
'----
Application.ScreenUpdating = False
If Target.AddressLocal = "$E$4" Then
actual = ActiveSheet.Name
Sheets(actual).Name = Sheets(actual).Range("ba4").Value
actual = ActiveSheet.Name
Range("G2").Select
End If
'----
Application.ScreenUpdating = False
If Target.AddressLocal = "$C$4" Then
actual = ActiveSheet.Name
Sheets(actual).Name = Sheets(actual).Range("ba4").Value
actual = ActiveSheet.Name
Range("G2").Select
End If
'----
Application.CutCopyMode = False
'ActiveSheet.Protect Password:="m"
'Sheets(actual).Protect Password:="m"
'Vuelve visibles los eventos posteriores
Application.ScreenUpdating = True
End Sub

¿Pusiste el código que te envié?

¿Qué error te envía?

Se queda en la línea

Private Sub Worksheet_Change(ByVal Target As Range)

¿Y dónde estás poniendo el evento? Lo estás poniendo en worksheet

Si tienes problemas envíame tu archivo y dime en qué hoja quieres el evento y en qué módulo tienes la macro

Te envié el archivo para que se ejecute la macro cuando modificas la celda M2. Eso es lo que tenías.

If Target.AddressLocal = "$M$2" Then

Qué bueno que ya quedó !

Ya estaba preocupado porque no encontraba cuál era el problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas