Repintando una celda usando excel VBA

Problema

Estoy escribiendo un código en Excel VBA para generar un informe. Soy totalmente nuevo en VBA. Aquí está mi código.

 Privado Sub CommandButton1_Click () Dim a1 As Integer Dim d1 As Integer Dim r1 As Integer a1 = Sheet1.Cells (2, 3) d1 = a1 8 r1 = a1 Mod 8 Si d1> = 5 Entonces Sheet1.Cells.Range ("A20 : E20 "). Interior.Color = vbBlack Else Para cnt = 1 A d1 Sheet1.Cells (20, cnt) .Interior.Color = vbBlack Next cnt Si r1 0 Entonces Sheet1.Cells (20, cnt) .Interior.Color = vbBlack Sheet1.Cells (20, cnt) .Font.Color = vbWhite Sheet1.Cells (20, cnt) = (8 - r1) End If End If End Sub 

La idea básica es colorear las celdas después de hacer clic en el botón de comando según el valor en Celdas (2, 3). Las celdas se colorean en función de los múltiplos de 8. El problema al que me enfrento es que las celdas conservan el color de manera permanente.

Por ejemplo, basado en el valor en Celdas (2, 3) si 5 celdas se colorean, permanecen allí permanentemente. Cuando cambio el valor en las celdas (2, 3) y hago clic en el botón de comando, el repintado de celdas no se realiza. ¿Alguien por favor me puede guiar con respecto a esto?

Solución

Intenta esto al principio del código. Esto borrará todas las celdas de la hoja de trabajo que estén coloreadas.

 Celdas.Seleccione Selection.Interior.ColorIndex = xlNells (2, 3) .Seleccione Private Sub CommandButton2_Click () Dim a1 As Integer Dim d1 As Integer Dim r1 As Integer Cells.Select Selection.Interior.ColorIndex = xlNone Cells (2, 3) ) .Seleccione a1 = Sheet1.Cells (2, 3) d1 = a1 8 r1 = a1 Mod 8 Si d1> = 5 Entonces Sheet1.Cells.Range ("A20: E20"). Interior.Color = vbBlack Else For cnt = 1 A d1 Sheet1.Cells (20, cnt) .Interior.Color = vbBlack Siguiente cnt Si r1 0 Entonces Sheet1.Cells (20, cnt) .Interior.Color = vbBlack Sheet1.Cells (20, cnt) .Font.Color = vbWhite Sheet1.Cells (20, cnt) = (8 - r1) End If End If End Sub 

Nota

Gracias a Helper por este consejo en el foro.

Artículo Anterior Artículo Siguiente

Los Mejores Consejos