Wpis z mikrobloga

Dobra, to znowu ja:)
Popełniłem w VBA takie coś:

Sub test()
Dim ostatniWiersz As Integer
Dim minZasob As Integer
Dim maxZasob As Integer
Dim stan As Integer
Dim i As Integer
ostatniWiersz = ActiveSheet.UsedRange.Rows.Count
For i = 1 To ostatniWiersz
minZasob = Worksheets("Arkusz1").Cells(i, 4)
maxZasob = Worksheets("Arkusz1").Cells(i, 5)
stan = Worksheets("Arkusz1").Cells(i, 3)
If (stan > minZasob) And (stan < maxZasob) Then
Cells(i, 1).Interior.Color = rgbGreen
Cells(i, 2).Interior.Color = rgbGreen
Cells(i, 3).Interior.Color = rgbGreen
Cells(i, 4).Interior.Color = rgbGreen
Cells(i, 5).Interior.Color = rgbGreen
Else
Cells(i, 1).Interior.Color = rgbRed
Cells(i, 2).Interior.Color = rgbRed
Cells(i, 3).Interior.Color = rgbRed
Cells(i, 4).Interior.Color = rgbRed
Cells(i, 5).Interior.Color = rgbRed
End If
Next i
End Sub

I pozostała mi jedna rzecz. Jak sprawić by to działało cały czas przy jakichkolwiek zmianach w komórce?
#vba #programowanie #office #excel
  • 8
  • Odpowiedz
@przemyslaw-maczka: No jak chcesz robić to w VBA to kod musi być wykonany pod nazwą makra "WorksheetChange()" umieszczonym w arkuszu na którym pracujesz.

Private Sub Worksheet
Change(ByVal Target As Range)

Dim ostatniWiersz As Integer
Dim minZasob As Integer
Dim maxZasob As Integer
Dim stan As Integer
Dim i As Integer
ostatniWiersz = ActiveSheet.UsedRange.Rows.Count
For i = 1 To ostatniWiersz
minZasob = Worksheets("Arkusz1").Cells(i, 4)
maxZasob = Worksheets("Arkusz1").Cells(i, 5)
stan = Worksheets("Arkusz1").Cells(i,
  • Odpowiedz
@przemyslaw-maczka: jak już napisano wyżej należy użyć formatowanie warunkowe. Tylko i wyłącznie.

ale jakbym chciał dodać dodatkowe rzeczy (przyciski itp.) to lipa.


A co to ma do rzeczy? Formatowanie warunkowe działać będzie równie dobrze również po dodaniu przycisku itp.

Prosiłbym jednak o jakąś poradę na temat VBA i automatycznego działania:)


Jeśli jakikolwiek kod ma być wykonany na skutek zmian dokonanych w arkuszu, to jak najbardziej powinien znaleźć się w procedurze Worksheet_Change,
  • Odpowiedz