Cambiar color con macro y bucar en otro libro

08/09/2006 - 19:21 por El Pepus | Informe spam
Hola de nuevo, no vale reirse, pero he tardado 4,5 horas en encontrar
estos codigos para abrir y cerrar un libro despues de mucho rebuscar
abro el libro Nombres.xls y me abre tambien el libro Servicios.xls
en estelibro de Nombres.xls este codigo

Private Sub Workbook_Open()
Workbooks.Open ("C:\Control\Servicios.xls")
End Sub

se tiene que trabajar con Servicios.xls y al cerrarlo que guarde tambien
Nombres.xls por si hay cambios en el, en estelibro de Servicios.xls este codigo

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Workbooks("Nombres.xls").Close SaveChanges = True
End Sub

Ahora biene lo que no funciona como comente en el hilo "Cambiar color con macros"
en la "Hoja1" de Servicios.xls tengo este codigo:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Column = 1 Then Exit Sub

With Cells(Target.Row, 4)
.NumberFormat = "hh:mm"
.Value = Now()
Cells(Target.Row, 5).Select

ŽESTE TROZO NO FUNCIONA
If Not Target.Column = 6 Then
Cells.Font.ColorIndex = 3
.Value = Now()
Else
Cells.Font.ColorIndex = 1
.Value = Now()
End If

End With
End Sub

Si pongo el "If Not Target.Column = 6 Then" me coloca toda la pagina en rojo y
si quito el Not lo dejo "If Target.Column = 6 Then" me coloca toda la pagina en negro
y yo quiero que si hay un valor en la columna 6 solo la fila correspondiente este en negro
y si en la columna 6 no hay nada este en rojo hasta que yo le ponga un valor y cambie
a negro, he probado de todo =$F="" pero logro hacerlo funcionar bien.

Otra cosa tambien quiero pasar a codigo lo siguiente:
=SI(A5>0;SI(ESERROR(COINCIDIR(A5;Hoja2!A:A;0));"No Existe";BUSCARV(Hoja1!A5;Hoja2!A:B;2;FALSO));"")
Pero, yo pongo el datos en columna A de la hoja que sea del libro Servicios.xls y lo busque en la
columna A del libro Nombres.xls y si lo encuentra que me copie los datos de la columna B del libro
Nombres.xls a la columna B del libro Servicios.xls en la hoja que tenga en pantalla en ese momento
o sea la hoja Activa??

Bueno a ver si no me he liado con tantos codigos y no me he explicado bien, si hace falta lo separo por
preguntas.
Venga un saludos a todos desde Ibiza y gracias anticipadas
Jose Amengual
 

Leer las respuestas

#1 Héctor Miguel
10/09/2006 - 02:56 | Informe spam
hola, jose !

1) la parte de codigo que no te funciona ES porque le preguntas si la columna es la #6 PERO...
al inicio del procedimiento condicionas para que si la columna NO es la #1... OMITA el resto del codigo :))

la otra parte que falla es porque aplicas propiedades al objeto 'Cells' [que se refiere a todas las celdas en la hoja]
cuando [supongo] que deberias afectar a un objeto 'range' de una sola celda [o algo parecido] p.e.

Target.EntireRow.Font.ColorIndex = ???????

2) para la segunda parte... podrias comentar/confirmar/... si lo que necesitas es 'efectivamente'...
-> depositar una formula... y dejar vinculado un libro con otro ? [entonces]... en cual celda se quedaria la formula ?
-> o solo necesitas obtener el dato [por codigo] y depositar SOLO un resultado [en cual hoja y celda ?] SIN vincular los libros ?
o... podrias intentar usando la grabadora de macros... revisar el codigo 'generado'... y comentar que necesitas modificarle -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
__ 1 __
... lo que no funciona como comente en el hilo "Cambiar color con macros" en la "Hoja1" de Servicios.xls tengo este codigo:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Column = 1 Then Exit Sub
With Cells(Target.Row, 4)
.NumberFormat = "hh:mm"
.Value = Now()
Cells(Target.Row, 5).Select
´ESTE TROZO NO FUNCIONA
If Not Target.Column = 6 Then
Cells.Font.ColorIndex = 3
.Value = Now()
Else
Cells.Font.ColorIndex = 1
.Value = Now()
End If
End With
End Sub
Si pongo el "If Not Target.Column = 6 Then" me coloca toda la pagina en rojo
y si quito el Not... me coloca toda la pagina en negro
y yo quiero que si hay un valor en la columna 6 solo la fila correspondiente este en negro
y si en la columna 6 no hay nada este en rojo hasta que yo le ponga un valor y cambie a negro
he probado de todo =$F="" pero logro hacerlo funcionar bien.



__ 2 __
Otra cosa tambien quiero pasar a codigo lo siguiente:
=SI(A5>0;SI(ESERROR(COINCIDIR(A5;Hoja2!A:A;0));"No Existe";BUSCARV(Hoja1!A5;Hoja2!A:B;2;FALSO));"")
Pero, yo pongo el datos en columna A de la hoja que sea del libro Servicios.xls y lo busque en la columna A del libro Nombres.xls
y si lo encuentra que me copie los datos de la columna B del libro Nombres.xls a la columna B del libro Servicios.xls
en la hoja que tenga en pantalla en ese momento o sea la hoja Activa??
Bueno a ver si no me he liado con tantos codigos y no me he explicado bien, si hace falta lo separo por preguntas.
Venga un saludos a todos desde Ibiza y gracias anticipadas
Jose Amengual

Preguntas similares