2016-03-31 11 views
-1

Guten Tag an alle, zur Zeit habe ich immer noch das Problem von meinem Chef Aufgabe, ein MS Excel-Makro zu erstellen.MS Excel Makro Auto-Count-Funktion

Problem jetzt mit Blick ist

  • Auto Zählung veraltete Daten und zeigt in dem Meldungsfeld, wenn der Benutzer öffnen Arbeitsblatt.

Ich hatte so viele Codes aus Internet-Quellen versucht, aber das Ergebnis immer noch das gleiche, es nicht in der Lage, den Code oder die gezählte Menge von 0

Jeder haben Vorschläge oder Lösung laufen. Vielen Dank.

Im Folgenden sind 2 Fehler codding

  • Dieses codding zeigt nur 0 Menge veralteter Daten.

    CountedAmount = Application.WorksheetFunction.CountIf (Range ("L4: L1048576"), "Red")

  • Diese codding wird nicht ausgeführt wird, warnen zeigen up Laufzeitfehler 1004 Anwendungsdefiniertes oder objektdefiniertes eror

    CountedAmount = Application.WorksheetFunction.CountIf (Range ("L4: xlUp"), "Red")

Dies sind die kompletten codding auf meinem Makro.

Sub Worksheet_Activate() 

Dim CountedAmount As Integer 

With Worksheets("Sheet1") 

lastrow = Range("L1048576").End(xlUp).Row 

'This codding will only display 0 amount of outdated data. 
CountedAmount = Application.WorksheetFunction.CountIf(Range("L4:L1048576"),  "Red") 

'This codding will not running, warning show up Run-time error 1004 Application-defined or object-defined eror 
'CountedAmount = Application.WorksheetFunction.CountIf(Range("L4:xlUp"), "Red") 

For i = 4 To lastrow 

If Range("L" & i).Value <> "" And Now <> "" Then 

    If Range("L" & i).Value <= Now Then 
     MsgBox CountedAmount & " expiring"   
     Range("L" & i).Font.ColorIndex = 3 

    End If 
End If 
Next i 
End With 
End Sub 
+0

Dies funktioniert gut, wenn der Wert der Zelle ist "rot" Application.WorksheetFunction.CountIf (Bereich ("L4: L1048576"), "Red"), aber wenn Sie die Anzahl der Zellen rot gefärbt werden möchten, dann Sie müssen etwas anderes finden – gizlmo

Antwort

0

Wenn Sie die Menge der Zellen rot gefärbt zählen wollen, dann so etwas wie folgt verwenden:

Dim startCell As Integer, endCell As Integer 
Dim column As Integer 
Dim CountCells As Integer 

startCell = 4 
endCell = 100 

column = 12 'Column L 

CountCells = 0 

Dim i As Integer 

For i = startCell To endCell Step 1 

    If Cells(i, column).Interior.ColorIndex = 3 Then 

     CountCells = CountCells + 1 
    End If 
Next i 

einstellen Startcell und endCell Ihr Handy und Spalte zu Ihrer Spalte passen. Diese Schleife sucht derzeit von L4 nach L100

Und Sie müssen herausfinden, welchen Farbindex das Rot, das Sie verwenden, hat. Möglicherweise müssen Sie .Color anstelle von .ColorIndex verwenden, das einen RGB-Code verwendet.

+0

thx für die Antwort, aber in der Kodierung ur zur Verfügung gestellt in Mine Coding Teil, funktioniert es nicht, er zählt immer noch 0, aufgrund der Kommentarbox hatte begrenzte Zeichen Raum, kann ich Nachricht mit? Übrigens weiß ich, wie man eine Nachricht an einen Benutzer startet, ich bin neu hier..z – Han

+0

Bitte sagen Sie mir, wie die veralteten Zellen markiert sind, wenn Sie nur diesen Code kopiert haben, könnte der Colorindex falsch sein. Wenn sie gefärbt sind, sagen Sie mir die Farbe oder Colorindex (Klicken Sie auf die Zelle und verwenden Sie Debug.Print ActiveCell.Interior.Color/ActiveCell.Interior.ColorIndex, um den Wert in der Debug-Fenster zu sehen) – gizlmo

+0

>>> Font.ColorIndex = 3 Ja, es ist gleich mit meinem vorherigen Coding. Basierend auf dem Code, den ich gepostet habe, ist das veraltete Datum des Vertragsabschlusses mit dem heutigen Datum vergleichbar, wenn also das Fälligkeitsdatum => Heute als veraltet betrachtet wird, ändert sich die vordere Farbe in rote Farbe. – Han