VBA resalta una celda si el rango correspondiente en la misma fila no está en blanco

VBA resalta una celda si el rango correspondiente en la misma fila no está en blanco

Estoy tratando de imponer el nombre del alimento en la columna B de un archivo si la columna D a DX (Cantidad) tiene algún valor.

Lo racional es que si se recibe una nueva solicitud de alimento que no aparece en el archivo, el usuario puede escribir temporalmente el nombre del alimento y luego ingresar la cantidad. Esto es para garantizar que el operador no ingrese un valor por error ni se olvide de transmitir información del nuevo elemento que agregó.

¿Es posible agregar un botón que pueda verificar todas las hojas desde D6 a DX98 y si se encuentra alguna cantidad y si la celda correspondiente en C está vacía, se marca C en rojo y un simple cuadro de mensaje indica que hay un error en el archivo.

El archivo en el que estoy trabajando es este: http://s000.tinyupload.com/?file_id=00523976624440052148

Respuesta1

Abra Macros /Visual Basic, haga doble clic en la hoja e inserte este código en el lado derecho:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkb As Workbook
Dim wks As Worksheet
Dim wksRange As Range
Set wkb = ThisWorkbook
Set wks = ActiveSheet
For i = 6 To 98 ' rows to be sweeped
    Set wksRange = wks.Range(Cells(i, 4), Cells(i, 127)) ' check from column 4 (D) to 127(DW)
    'Paint grey cells on columns A to C
    color_cell_a = Cells(i, 1).Interior.Color
    Cells(i, 2).Interior.Color = color_cell_a
    Cells(i, 3).Interior.Color = color_cell_a
    'If on the row there are values
    If WorksheetFunction.CountA(wksRange) <> 0 Then
        itemName = Cells(i, 2)
        itemPrice = Cells(i, 3)
        'Change color on column B
        If itemName = "" Then
            Cells(i, 2).Interior.Color = RGB(184, 0, 0)
        End If
        'Change color on column C
        If itemPrice = "" Then
            Cells(i, 3).Interior.Color = RGB(184, 0, 0)
        End If
    End If
Next i
End Sub

Comprueba el área que cubre D6:DW98y si hay un valor en una fila sinNombre del árticuloyPrecio unitario, marcará en rojo esas celdas hasta que escribas algo en ellas.

El código es muy fácil de modificar si deseas personalizarlo.

información relacionada