Tengo una consultilla, he encontrado un codigo en el cual me especifica el color de las columnas y de las filas de un msflexgrid (siempre fijos), en cambio yo lo que necesito es que la ultima fila los colores de las celdas no sean todos iguales sino alternativos ejemplo por celda .: blanco, rosa, blanco, rosa, blanco, rosa, etc. y este codigo lo unico que me hace es que todas las filas sean o amarillo o blanco de color unico (No como un tablero de ajedrez solo la ultima fila) Ah! Tengo un número de filas y columnas fijo siendo 7 y 7. ¿Como podria variarlo? por otro lado os remito el codigo pero podriais explicarme lo que hace y donde pues si lo copio nada mas lo unico que realizo es copy/paste y no aprendo.
Muchas gracias por adelantado.
codigo:
Código vb:
Ver original
Option Explicit ' ---------------------------------------------------------------------------------------------- ' \\ -- Descripción : Alternar color por Filas en Flexgrid ' -- Autor : Luciano Lodola -- http://www.recursosvisualbasic.com.ar/ ' ---------------------------------------------------------------------------------------------- ' ---------------------------------------------------------------------------------------------- Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long Private Declare Sub InitCommonControls Lib "Comctl32" () ' ---------------------------------------------------------------------------------------------- ' \\ -- Descripción : Alternar color por Filas en Flexgrid ' -- Autor : Luciano Lodola -- http://www.recursosvisualbasic.com.ar/ ' ---------------------------------------------------------------------------------------------- ' ---------------------------------------------------------------------------------------------- Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long Private Declare Sub InitCommonControls Lib "Comctl32" () ' -------------------------------------------------------------------------------------------- ' \\ -- Función para Colorear por Filas ' -------------------------------------------------------------------------------------------- Private Sub pvSetColors(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long) Dim iRow As Long Dim iCol As Integer Dim lCurrentColor As Long With objFlexgrid ' -- Desahbilitar el repintado del control para agilizar el trabajo .Redraw = False .BackColor = lColor1 ' -- Recorrer las filas For iRow = 0 To .Rows - 1 Step 2 ' -- Establecer la Fila actual del flex .Row = iRow ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual For iCol = 0 To .Cols - 1 .Col = iCol .CellBackColor = lColor2 Next Next ' -- Reestablecer la propiedad Redraw para poder refrescar el control .Redraw = True End With End Sub ' -------------------------------------------------------------------------------------------- ' \\ -- Función para Colorear por Filas ' -------------------------------------------------------------------------------------------- Private Sub pvSetColors(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long) Dim iRow As Long Dim iCol As Integer Dim lCurrentColor As Long With objFlexgrid ' -- Desahbilitar el repintado del control para agilizar el trabajo .Redraw = False .BackColor = lColor1 ' -- Recorrer las filas For iRow = 0 To .Rows - 1 Step 2 ' -- Establecer la Fila actual del flex .Row = iRow ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual For iCol = 0 To .Cols - 1 .Col = iCol .CellBackColor = lColor2 Next Next ' -- Reestablecer la propiedad Redraw para poder refrescar el control .Redraw = True End With End Sub Private Sub pvSetColors2(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long) Dim iRow As Long Dim iCol As Integer Dim lCurrentColor As Long With objFlexgrid ' -- Desahbilitar el repintado del control para agilizar el trabajo .Redraw = False .BackColor = lColor1 .Row = 6 ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual For iCol = 0 To .Cols - 1 .Col = iCol .CellBackColor = lColor2 Next ' -- Reestablecer la propiedad Redraw para poder refrescar el control .Redraw = True End With End Sub Private Sub Form_Load() Call pvSetColors(MSFlexGrid1, RGB(255, 255, 203), RGB(255, 255, 255)) semana_C = Format(Date, "WW") lbl_nrsemana = semana_C End Sub