Marcar registros con datos extraídos

17/06/2005 - 02:09 por Esteban Dido | Informe spam
Hola,
¿Se pueden marcar los datos extraídos de una hoja?
Tengo en una hoja un listado de artículos para ser facturados.
Con otra hoja, para facturar, se extraen los datos desde el listado mediante
el uso de la fórmula BUSCARV.
¿Es posible, al extraer los datos, marcar el registro extraído para
facturar?
Gracias y Saludos

Preguntas similare

Leer las respuestas

#11 Héctor Miguel
24/06/2005 - 05:22 | Informe spam
hola, Esteban !

... puedo retirar manualmente el registro equivocado, pero
... que el codigo lo haga... al presionar... Supr... entre A17 y A28... o al escribir algo... no estando vacia
... si la idea sirve, ¿me ayudas con el codigo que habria que agregar?



desde que 'vi venir' la situacion que comentas... estaba 'ideando' la forma de...
'embromar' a excel... procurando que 'al final de cuentas'... la broma NO se 'regrese' al 'embromador' :))
lo que sucede a menudo cuando se 'intenta' hacer que excel 'caiga en [una especie de] engaño' :-(
me quedaba 'volando' cuando se edita/modifica si ya habia anteriormente un codigo ->diferente<- :-\
[habia que 'borrar' la facturacion registrada del 'anterior' y registrar la facturacion del 'nuevo']
[en fin...] el codigo no me ha quedado [lo que 'se dice']... 'ligerito y delgado' :-( pero si [espero que] 'funcional' -?-
al menos, para las [posibles] 'situaciones' que se me han ocurrido 'al vuelo' :D

si cualquier duda [o surgen detalles 'adicionales']... comentas?
saludos,
hector.
en el modulo de codigo de la hoja 'Factura' ==Dim Anterior, Base, Caso As Byte, Dato As Range, DatoAnt As Range, EnAccion As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a17:a28")) Is Nothing Then ActiveCell.Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("a17:a28")) Is Nothing Then Exit Sub
If Not IsEmpty(Target) Then Caso = 1 Else Caso = 0
With Application: .ScreenUpdating = False: .EnableEvents = False
Base = Target: .Undo: If Not IsEmpty(Target) Then Caso = Caso + 2: Anterior = Target
Target = Base
End With: On Error GoTo Fin
With Worksheets("Datos").Range("b9:b40")
Select Case Caso
Case 0: GoTo Fin
Case 1: Set Dato = .Find(What:=Target, LookIn:=xlValues, LookAt:=xlWhole)
Case 2: Set Dato = .Find(What:=Anterior, LookIn:=xlValues, LookAt:=xlWhole)
Case 3: Set Dato = .Find(What:=Target, LookIn:=xlValues, LookAt:=xlWhole)
Set DatoAnt = .Find(What:=Anterior, LookIn:=xlValues, LookAt:=xlWhole)
End Select
End With
If Not DatoAnt Is Nothing Then DatoAnt.Offset(, 9).ClearContents: Set DatoAnt = Nothing
If Not Dato Is Nothing Then
If Caso = 1 _
Then If Not IsEmpty(Dato.Offset(, 9)) _
Then MsgBox "El codigo " & Target & " ya ha sido incluido en la factura " & _
Dato.Offset(, 9): Target.ClearContents Else Dato.Offset(, 9) = [b4]
If Caso = 2 Then Dato.Offset(, 9).ClearContents
If Caso = 3 Then Dato.Offset(, 9) = [b4]
Set Dato = Nothing
End If
Fin:
Application.EnableEvents = True
End Sub
Respuesta Responder a este mensaje
#12 Esteban Dido
27/06/2005 - 23:55 | Informe spam
Hola, H.
Funciona, pero muy raro. He notado que no funciona deshacer, al presionar
Enter no cambia de celda, no se puede seleccionar varias celdas, etc. ¿Por
que sucede eso?

Saludos
"Héctor Miguel" escribió en el mensaje
news:#
hola, Esteban !

> ... puedo retirar manualmente el registro equivocado, pero
> ... que el codigo lo haga... al presionar... Supr... entre A17 y A28...


o al escribir algo... no estando vacia
> ... si la idea sirve, ¿me ayudas con el codigo que habria que agregar?

desde que 'vi venir' la situacion que comentas... estaba 'ideando' la


forma de...
'embromar' a excel... procurando que 'al final de cuentas'... la broma NO


se 'regrese' al 'embromador' :))
lo que sucede a menudo cuando se 'intenta' hacer que excel 'caiga en [una


especie de] engaño' :-(
me quedaba 'volando' cuando se edita/modifica si ya habia anteriormente un


codigo ->diferente<- :-\
[habia que 'borrar' la facturacion registrada del 'anterior' y registrar


la facturacion del 'nuevo']
[en fin...] el codigo no me ha quedado [lo que 'se dice']... 'ligerito y


delgado' :-( pero si [espero que] 'funcional' -?-
al menos, para las [posibles] 'situaciones' que se me han ocurrido 'al


vuelo' :D

si cualquier duda [o surgen detalles 'adicionales']... comentas?
saludos,
hector.
en el modulo de codigo de la hoja 'Factura' ==> Dim Anterior, Base, Caso As Byte, Dato As Range, DatoAnt As Range,


EnAccion As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a17:a28")) Is Nothing Then


ActiveCell.Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("a17:a28")) Is Nothing Then Exit Sub
If Not IsEmpty(Target) Then Caso = 1 Else Caso = 0
With Application: .ScreenUpdating = False: .EnableEvents = False
Base = Target: .Undo: If Not IsEmpty(Target) Then Caso = Caso + 2:


Anterior = Target
Target = Base
End With: On Error GoTo Fin
With Worksheets("Datos").Range("b9:b40")
Select Case Caso
Case 0: GoTo Fin
Case 1: Set Dato = .Find(What:=Target, LookIn:=xlValues,


LookAt:=xlWhole)
Case 2: Set Dato = .Find(What:=Anterior, LookIn:=xlValues,


LookAt:=xlWhole)
Case 3: Set Dato = .Find(What:=Target, LookIn:=xlValues,


LookAt:=xlWhole)
Set DatoAnt = .Find(What:=Anterior, LookIn:=xlValues,


LookAt:=xlWhole)
End Select
End With
If Not DatoAnt Is Nothing Then DatoAnt.Offset(, 9).ClearContents: Set


DatoAnt = Nothing
If Not Dato Is Nothing Then
If Caso = 1 _
Then If Not IsEmpty(Dato.Offset(, 9)) _
Then MsgBox "El codigo " & Target & " ya ha sido incluido en la


factura " & _
Dato.Offset(, 9): Target.ClearContents Else Dato.Offset(, 9) [b4]
If Caso = 2 Then Dato.Offset(, 9).ClearContents
If Caso = 3 Then Dato.Offset(, 9) = [b4]
Set Dato = Nothing
End If
Fin:
Application.EnableEvents = True
End Sub


Respuesta Responder a este mensaje
#13 Héctor Miguel
28/06/2005 - 00:57 | Informe spam
hola, Esteban !

Funciona, pero muy raro.
... no funciona deshacer
... al presionar Enter no cambia de celda
... no se puede seleccionar varias celdas, etc. Porque sucede eso?



1) cualquier codigo que modifica valores/propiedades de objetos rango...
-> vacia la pila de niveles para deshacer [undo... ctrl+z] :-(
es decir... lo que se hace por codigo... NO se puede deshacer [por la interfase del usuario] :-(
2) el que no se puedan seleccionar varias celdas... es una 'medida para la prevencion' de [posibles] errores :))
y SOLO es aplicable si dentro de la seleccion 'multiple' hay alguna celda del rango 'monitoreado' [A17:A28]
3) presionar {enter} NO cambia la seleccion de la celda activa [supongo que tienes habilitada esa caracteristica]
porque para poder 'monitorear los cambios de criterio' [ya sabes... habia algo y el usuario 'decidio' que 'siempre no'] :))
el codigo ->'necesita regresar'<- [a la celda modificada] ->su valor anterior<- [revisa la instruccion 'Undo' en el codigo]
luego 'le regresa' el valor 'recientemente' ingresado y ya esta en condiciones de buscar por el anterior Y el nuevo ;)
-> observa que en el codigo 'se manejan' CUATRO posibles 'combinaciones' de valor anterior versus valor nuevo
'combinado' con una [posible] seleccion 'multiple' de celdas...
el codigo minimo-requerido para seguir ofreciendo 'tanta amigabilidad/flexibilidad/...' al usuario seria mas 'extenso' :-(
-> es 'parte' del porque te comentaba [con cierta 'insistencia'] que lo importante seria determinar 'el moment de registrar...' ;)

si cualquier duda... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#14 Esteban Dido
28/06/2005 - 01:39 | Informe spam
Gracias Héctor,
Así lo dejaré entonces. Lo importante es que funciona muy bién para lo que
lo necesito. Lo que te preguntaba no son más que detalles.
Agradezco mucho tu ayuda.
Un saludo
E.D.

Saludos
"Héctor Miguel" escribió en el mensaje
news:
hola, Esteban !

> Funciona, pero muy raro.
> ... no funciona deshacer
> ... al presionar Enter no cambia de celda
> ... no se puede seleccionar varias celdas, etc. Porque sucede eso?

1) cualquier codigo que modifica valores/propiedades de objetos rango...
-> vacia la pila de niveles para deshacer [undo... ctrl+z] :-(
es decir... lo que se hace por codigo... NO se puede deshacer [por


la interfase del usuario] :-(
2) el que no se puedan seleccionar varias celdas... es una 'medida para la


prevencion' de [posibles] errores :))
y SOLO es aplicable si dentro de la seleccion 'multiple' hay alguna


celda del rango 'monitoreado' [A17:A28]
3) presionar {enter} NO cambia la seleccion de la celda activa [supongo


que tienes habilitada esa caracteristica]
porque para poder 'monitorear los cambios de criterio' [ya sabes...


habia algo y el usuario 'decidio' que 'siempre no'] :))
el codigo ->'necesita regresar'<- [a la celda modificada] ->su valor


anterior<- [revisa la instruccion 'Undo' en el codigo]
luego 'le regresa' el valor 'recientemente' ingresado y ya esta en


condiciones de buscar por el anterior Y el nuevo ;)
-> observa que en el codigo 'se manejan' CUATRO posibles 'combinaciones'


de valor anterior versus valor nuevo
'combinado' con una [posible] seleccion 'multiple' de celdas...
el codigo minimo-requerido para seguir ofreciendo 'tanta


amigabilidad/flexibilidad/...' al usuario seria mas 'extenso' :-(
-> es 'parte' del porque te comentaba [con cierta 'insistencia'] que lo


importante seria determinar 'el moment de registrar...' ;)

si cualquier duda... comentas?
saludos,
hector.


Respuesta Responder a este mensaje
#15 Esteban Dido
29/06/2005 - 01:37 | Informe spam
Hola H,

Mi cliente desea que 'deffinitivamente' al ingresar un código y presionar
[Enter] el cursor pase a la celda siguiente hacia abajo para evitar errores
de escritura.
Así como está hay que presionar [Enter] dos veces y solicita que no sea así
ya que el usuario probablemente va a escribir un código, presionar [Enter] y
escribir el siguiente código, con lo que borrará el anterior.
¿Se puede?

Saludos
E.D.

"Héctor Miguel" escribió en el mensaje
news:
hola, Esteban !

> Funciona, pero muy raro.
> ... no funciona deshacer
> ... al presionar Enter no cambia de celda
> ... no se puede seleccionar varias celdas, etc. Porque sucede eso?

1) cualquier codigo que modifica valores/propiedades de objetos rango...
-> vacia la pila de niveles para deshacer [undo... ctrl+z] :-(
es decir... lo que se hace por codigo... NO se puede deshacer [por


la interfase del usuario] :-(
2) el que no se puedan seleccionar varias celdas... es una 'medida para la


prevencion' de [posibles] errores :))
y SOLO es aplicable si dentro de la seleccion 'multiple' hay alguna


celda del rango 'monitoreado' [A17:A28]
3) presionar {enter} NO cambia la seleccion de la celda activa [supongo


que tienes habilitada esa caracteristica]
porque para poder 'monitorear los cambios de criterio' [ya sabes...


habia algo y el usuario 'decidio' que 'siempre no'] :))
el codigo ->'necesita regresar'<- [a la celda modificada] ->su valor


anterior<- [revisa la instruccion 'Undo' en el codigo]
luego 'le regresa' el valor 'recientemente' ingresado y ya esta en


condiciones de buscar por el anterior Y el nuevo ;)
-> observa que en el codigo 'se manejan' CUATRO posibles 'combinaciones'


de valor anterior versus valor nuevo
'combinado' con una [posible] seleccion 'multiple' de celdas...
el codigo minimo-requerido para seguir ofreciendo 'tanta


amigabilidad/flexibilidad/...' al usuario seria mas 'extenso' :-(
-> es 'parte' del porque te comentaba [con cierta 'insistencia'] que lo


importante seria determinar 'el moment de registrar...' ;)

si cualquier duda... comentas?
saludos,
hector.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida