Muy buenas, mi problema es que necesito que mi código funcione solo en un rango determinado de la hoja y no en el resto. ¿Cómo puedo hacerlo?, ¿Qué instrucción necesito? Muchas Gracias por anticipado enyale
1 Respuesta
Respuesta
0
0
Anónimo
Depende como es tu código y que es lo que hace. Tenés muchas instrucciones para decirle en que zona de la hoja trabajar pero deberías hacer la pregunta más "acotada"
Te intentare explicar brevemente lo que quiero; Se trata de una ficha sobre proveedores que me emiten facturas con tres vencimientos. Yo, en una tabla, subdivido cada vencimiento en tres columnas. La primera solo la marco o no con una "X" que significa pagada.La segunda es el importe y la tercera la fecha de vencimiento. Lo que mi código hace es simplemente cuando un vencimiento ha pasado de fecha y no tiene la "X" de pagado rellena la casilla del importe de color amarillo. Pero tanto el segundo vencimiento como el tercero deben tener colores distintos y con el código que tengo hecho como no es selectivo y se aplica a toda la hoja, todos los marca de amarillo. Espero haberme explicado con claridad Te doy las gracias de nuevo enyale
Si es lo que entiendo, sería algo más o menos así Range("A1:A10").Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With
Te transcribo mi código: Sub EstablecerColor() If ActiveCell.Value = "X" Then ActiveCell.Next.Interior.ColorIndex = 0 Else ActiveCell.Next.Interior.ColorIndex = xlNone If ActiveCell.Value = "" Then ActiveCell.Next.Interior.ColorIndex = 6 End If End If End Sub Y lo que quiero es que solo se aplique al rango ("F6:F32") y que no funcione cuando edito otra celda. Ten en cuenta que está incluida aqui y se ejecuta todo el tiempo: Sub auto_open() With Worksheets("Hoja1") .OnEntry = "EstablecerColor" End With End Sub Gracias de nuevo y un saludo enyale
Creo que tenés que cambiar el lugar donde la estás ejecutando, hace click derecho sobre la solapa del nombre de la hoja y allí elegí "Ver código"; luego verás que queda seleccionado el código en la hoja en cuestion; el código que querés deberías ponerlo (con alguna ligera modificación) en el Evento Change de la hoja, te quedaría algo más o menos así Private Sub Worksheet_Change(ByVal Target As Range) Dim rAux As Range Set rAux = Range("F6:F32") If Not (Intersect(rAux, Target) Is Nothing) Then 'si es nothing es porque está "fuera de rango" If Target.Value = "X" Then ActiveCell.Next.Interior.ColorIndex = 0 Else ActiveCell.Next.Interior.ColorIndex = xlNone If ActiveCell.Value = "" Then ActiveCell.Next.Interior.ColorIndex = 6 End If End If Set rAux = Nothing End Sub