Como hacer que al colorear una fila no se salga del rango de la tabla.

Esta es la pregunta sobre la macro anterior

Sub venci()
'x Elsamatilde
Dim fec1 As Date, fec2 As Date
Application.ScreenUpdating = False
On Error Resume Next
'solo se aplicará a la hoja Medicamentos
'Set hs = Sheets("medicamentos")
Set hs = Sheets(ActiveSheet.Name)
'
fec1 = Range("f1").Value ' aqui se encuentra la fecha de partida con formula =HOY()
fec2 = Range("g1").Value ' aqui la fecha final con formula =FECHA.MES(F1,24), el 24 son meses
'los datos empiezan en fila 3 y se recorre el total de registros
For i = 3 To hs.Range("A" & Rows.Count).End(xlUp).Row
'se controla fechas en col D
If hs.Cells(i, "D") >= fec1 And hs.Cells(i, "D") <= fec2 Then
'hs.Cells(i, 4).Interior.ColorIndex = 4 'solo se colorea la celda de la col D
hs.Cells(i, 4).EntireRow.Interior.ColorIndex = 4 'se colore toda la fila
End If
Next
End Sub

El asunto es como hacer para que cuando me seleccione una fila el color no se salgo de la tabla (la tabla cubre desde la columna A hasta la J), el asunto es que asi como esta la macro me marca con color la fila hasta el final de la hoja.

Respuesta
1

Entonces quedamos en que ya está resuelto lo de las distintas hojas y si solo necesitas el rango A:J estimaré que es el mismo rango en todas las hojas, sino hay que agregar algún condicional.

La fila la da la variable 'i' quedando de este modo:

hs.Range("A" & i & ":J" & i).Interior.ColorIndex = 4 

Si por alguna razón cierta hoja presenta un rango diferente (supongamos que Medicamentos llega hasta M) sería:

if activesheet.name = "Medicamentos" then 

hs.Range("A" & i & ":M" & i).Interior.ColorIndex = 4 

else

hs.Range("A" & i & ":J" & i).Interior.ColorIndex = 4 

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas