Especificar rango para ejecutar código

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
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas