Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[SOLUCIONADO] macro para actualizar precio alto

Estas en el tema de macro para actualizar precio alto en el foro de Visual Basic clásico en Foros del Web. Generé un boton que llamo "actualiza precio", y lo que quiero que haga la macro es que sin necesidad de presionar el boton, al momento ...
  #1 (permalink)  
Antiguo 24/08/2013, 08:58
 
Fecha de Ingreso: agosto-2013
Ubicación: Mexico
Mensajes: 12
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta macro para actualizar precio alto

Generé un boton que llamo "actualiza precio", y lo que quiero que haga la macro es que sin necesidad de presionar el boton, al momento de actualizar el precio actualice el precio mas alto. El ejemplo es el siguiente:

en la columna J, tengo el espacio del precio para actualizar, en la columna L es donde la macro pone el precio mas alto (es igual a la columna Z), en la columna M, tengo la formula MAX(NUM1,NUM2), donde selecciona el precio mas alto de ambos, y lo que hace mi macro es que copia todos los numeros de la columna M y los pega en la columna Z, para que en automatico se actualice el precio as alto en la columna L, lo que no puedo hacer es que sin necesidad de presionar el boton de actualizar, cada vez que yo actualice el precio, haga este calculo y ajuste el precio mas alto. Las columnas M y Z las tengo ocultas y la macro las muestra para correr la macro y las vuelve a ocultar al final

La Macro actual es la siguiente:

Sub actprecioalto()
'
' actprecioalto Macro
'

'
Columns("L:N").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=13
Columns("Y:AA").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=-11
Columns("M:M").Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=7
Range("Z1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.EntireColumn.Hidden = True
ActiveWindow.SmallScroll ToRight:=-15
Columns("M:M").Select
Selection.EntireColumn.Hidden = True
Range("J2").Select
End Sub


Saludos y Gracias por la ayuda
__________________
Pepe L
  #2 (permalink)  
Antiguo 25/08/2013, 03:33
 
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

Y no sería más fácil poner la fórmula 'MAX(J#1,Z#1)' en la columna L en ese caso siempre tendrás en ese campo el precio más alto.

Si lo que quieres es que se te guarde el precio más alto de los dos y se quede la columna J limpia, entonces o ejecutas la macro con tu botón, o lo programas en VBA sin macro, por ejemplo creandote un formulario para introducir los datos.
  #3 (permalink)  
Antiguo 26/08/2013, 10:22
 
Fecha de Ingreso: agosto-2013
Ubicación: Mexico
Mensajes: 12
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

Cita:
Iniciado por naugthall Ver Mensaje
Y no sería más fácil poner la fórmula 'MAX(J#1,Z#1)' en la columna L en ese caso siempre tendrás en ese campo el precio más alto.

Si lo que quieres es que se te guarde el precio más alto de los dos y se quede la columna J limpia, entonces o ejecutas la macro con tu botón, o lo programas en VBA sin macro, por ejemplo creandote un formulario para introducir los datos.

El problema de dejar la formula en la columna J, es que si mas adelante actualizo el precio por uno mas alto, pero no mas alto que el anterior, me lo va a modificar sin ser este el mas alto registrado historicamente, es por eso que utilizo la macro, pero mi problema es que no se como crear el codigo para que funcione en automatico cada vez que modifiques un precio

Gracias
  #4 (permalink)  
Antiguo 06/09/2013, 15:59
Avatar de Rick001  
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

saludos:

prueba este codigo en la hoja.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 10 Then 'donde 10 es el numero de columna

Columns("L:N").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=13
Columns("Y:AA").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=-11
Columns("M:M").Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=7
Range("Z1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.EntireColumn.Hidden = True
ActiveWindow.SmallScroll ToRight:=-15
Columns("M:M").Select
Selection.EntireColumn.Hidden = True
Range("J2").Select

End Sub

suerte
  #5 (permalink)  
Antiguo 07/09/2013, 10:15
 
Fecha de Ingreso: agosto-2013
Ubicación: Mexico
Mensajes: 12
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

Gracias por tu apoyo, sabes que ya lo probe y cuando doy enter despues de agregar el precio en la columna 10, me aparece una ventana de excel con el siguiente error:
Error de compilacion
Nombre ambiguo detectado:
Worksheet_Change

no se si sea por que en esa misma hoja tengo la siguiente macro para que al poner este mismo precio actualice la fecha de actualizacion del precio

Private Sub Worksheet_Change(ByVal Target As Range)
tiempo = Date
Set isect = Application.Intersect(Target, Range("j2:j10000"))
If Not isect Is Nothing Then
If isect.Value <> "" Then
isect.Offset(0, 1).Value = tiempo
End If
Set isect = Application.Intersect(Target, Range("j2: j10000 "))
If Not isect Is Nothing Then
If isect.Value = "" Then
isect.Offset(0, 1).Value = ""
End If
End If
End If
End Sub


Gracias por tu apoyo



Cita:
Iniciado por Rick001 Ver Mensaje
saludos:

prueba este codigo en la hoja.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 10 Then 'donde 10 es el numero de columna

Columns("L:N").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=13
Columns("Y:AA").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=-11
Columns("M:M").Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=7
Range("Z1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.EntireColumn.Hidden = True
ActiveWindow.SmallScroll ToRight:=-15
Columns("M:M").Select
Selection.EntireColumn.Hidden = True
Range("J2").Select

End Sub

suerte
  #6 (permalink)  
Antiguo 10/09/2013, 09:27
Avatar de Rick001  
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

no estarás llamando a 2 procesos (Private Sub Worksheet_Change(ByVal Target As Range)) en la misma hoja?

ya probé tu código y si pone la fecha actual en "K"

Salu2
  #7 (permalink)  
Antiguo 10/09/2013, 11:13
 
Fecha de Ingreso: agosto-2013
Ubicación: Mexico
Mensajes: 12
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

Cita:
Iniciado por Rick001 Ver Mensaje
no estarás llamando a 2 procesos (Private Sub Worksheet_Change(ByVal Target As Range)) en la misma hoja?

ya probé tu código y si pone la fecha actual en "K"

Salu2
Tienes toda la razon, ya probe cada uno de los procesos por separado en la hoja y si funcionan (aunque en el que me diste tuve que agregar un End If antes de End Sub por que me marcaba un error), pero al querer usar los dos no puedo, conoces alguna manera en la cual pueda correr ambos al mismo tiempo en la misma hoja?

Gracias por la ayuda

Última edición por plambreton; 10/09/2013 a las 11:31
  #8 (permalink)  
Antiguo 10/09/2013, 11:54
Avatar de Rick001  
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

Private Sub Worksheet_Change(ByVal Target As Range)
tiempo = Date
Set isect = Application.Intersect(Target, Range("j2:j10000"))
If Not isect Is Nothing Then
If isect.Value <> "" Then
isect.Offset(0, 1).Value = tiempo
End If
Set isect = Application.Intersect(Target, Range("j2: j10000 "))
If Not isect Is Nothing Then
If isect.Value = "" Then
isect.Offset(0, 1).Value = ""
End If
End If
End If

If Target.Column = 10 Then
Columns("L:N").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=13
Columns("Y:AA").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=-11
Columns("M:M").Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=7
Range("Z1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.EntireColumn.Hidden = True
ActiveWindow.SmallScroll ToRight:=-15
Columns("M:M").Select
Selection.EntireColumn.Hidden = True
Range("J2").Select
End If
End Sub


//espero que con esto quede.
salu2
  #9 (permalink)  
Antiguo 11/09/2013, 16:34
 
Fecha de Ingreso: agosto-2013
Ubicación: Mexico
Mensajes: 12
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: macro para actualizar precio alto

Cita:
Iniciado por Rick001 Ver Mensaje
Private Sub Worksheet_Change(ByVal Target As Range)
tiempo = Date
Set isect = Application.Intersect(Target, Range("j2:j10000"))
If Not isect Is Nothing Then
If isect.Value <> "" Then
isect.Offset(0, 1).Value = tiempo
End If
Set isect = Application.Intersect(Target, Range("j2: j10000 "))
If Not isect Is Nothing Then
If isect.Value = "" Then
isect.Offset(0, 1).Value = ""
End If
End If
End If

If Target.Column = 10 Then
Columns("L:N").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=13
Columns("Y:AA").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll ToRight:=-11
Columns("M:M").Select
Selection.Copy
ActiveWindow.SmallScroll ToRight:=7
Range("Z1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.EntireColumn.Hidden = True
ActiveWindow.SmallScroll ToRight:=-15
Columns("M:M").Select
Selection.EntireColumn.Hidden = True
Range("J2").Select
End If
End Sub


//espero que con esto quede.
salu2
Ya quedo! muchas gracias por tu ayuda!!!!

Etiquetas: excel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:12.