VBA hebt eine Zelle hervor, wenn der entsprechende Bereich in derselben Zeile nicht leer ist

VBA hebt eine Zelle hervor, wenn der entsprechende Bereich in derselben Zeile nicht leer ist

Ich versuche, den Lebensmittelnamen in Spalte B einer Datei zu erzwingen, wenn die Spalte D bis DX (Menge) einen beliebigen Wert enthält.

Wenn eine neue Lebensmittelanforderung eingeht, die nicht in der Datei erscheint, kann der Benutzer vorübergehend den Namen des Lebensmittels und dann die Menge eingeben. Auf diese Weise wird sichergestellt, dass der Bediener nicht versehentlich einen Wert eingibt oder vergisst, Informationen zum neuen hinzugefügten Artikel zu übermitteln.

Ist es möglich, eine Schaltfläche hinzuzufügen, mit der alle Blätter von D6 bis DX98 geprüft werden können und die, wenn eine beliebige Menge gefunden wird und die entsprechende Zelle in C leer ist, C rot markiert und in einer einfachen MsgBox darauf hingewiesen wird, dass in der Datei ein Fehler vorliegt?

Die Datei, an der ich arbeite, ist diese: http://s000.tinyupload.com/?file_id=00523976624440052148

Antwort1

Öffnen Sie Makros/Visual Basic, doppelklicken Sie auf das Blatt und fügen Sie diesen Code auf der rechten Seite ein:

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

Es prüft die Flächenabdeckung D6:DW98und ob es einen Wert in einer Zeile ohneArtikelnameUndEinzelpreis, diese Zellen werden rot markiert, bis Sie etwas darauf schreiben.

Der Code lässt sich sehr einfach ändern, wenn Sie ihn anpassen möchten.

verwandte Informationen