Wenn mit Excel-VBA arbeitet, ist es enorm hilfreich, um die Idee von Objects
und Collections
und wie zu erfassen, sie zu Schleife.
Das Watch-Fenster ist hier der beste Freund, genauso wie das Schlüsselwort With
beim Schreiben von Code.
In Ihrem Fall: ein Cell
ist ein Objekt innerhalb des Worksheet.Cells
-collection (in Ihrem Fall auch ein Objekt im ActiveSheet.Rows(1).Cells
-collection
Das tut, was Sie wollen, auf der Grundlage der Informationen, die Sie uns gegeben haben. (Sie didnt angeben, dass Sie nicht wollen, die ganze Reihe Schleife;))
Option Explicit
Sub ColorCells()
Dim objCell As Object
With ActiveSheet
With .Rows(1)
For Each objCell In .Cells
With objCell
If .Value > 0 Then .Interior.ColorIndex = 48
End With
Next objCell
End With
End With
End Sub
Dies sollte Ihnen eine Idee geben, wie Excel- Objects
Arbeit.
Natürlich können wir diese kürzer schreiben:
Sub ColorCells()
Dim objCell As Object
For Each objCell In ActiveSheet.Rows(1).Cells
If objCell.Value > 0 Then objCell.Interior.ColorIndex = 48
Next objCell
End Sub
Hinweis:
Dieser Code wird in Ihrem alle 16k Cells
Schleife. Natürlich könnten wir bei Ihrem letzten gebrauchten Cell
anhalten. Da dies jedoch in weniger als einer Sekunde ausgeführt wird, habe ich das bewusst weggelassen, um den Code sauber zu halten.
Während Sie dies mit bedingter Formatierung tun können, unterstütze ich die Idee, dies mit Code ONCE zu tun, ohne Spuren (das heißt, Ihre bedingten Formate), links.
Ich verstehe, was Sie versucht haben, mit .CountA
und .EntireRow
zu tun, dies funktioniert hier nicht.
Vielen Dank für Ihre Antwort, ich bin zu VBA nur neu und es ist in meinem Kopf getan, funktioniert dies sehr gut. – Hosey93
Ich bin froh, dass ich helfen konnte. Achten Sie darauf, die Frage als beantwortet zu markieren. Überlegen Sie auch, ob 'objCell.Value> 0 'wirklich das tut, was Sie brauchen, oder ob Sie etwas wie' IsEmpty 'brauchen. –