Chciałem, aby w excelu w równych odstępach czasu po naciśnięciu przycisku kolejne komórki dowolnej kolumny zmieniały kolor np poczynając od A1 do A5.
Po uruchomieniu makra pojawia się błąd jak na zdjęciu. Dlaczego makro nie działa ?
Chciałem, aby w excelu w równych odstępach czasu po naciśnięciu przycisku kolejne komórki dowolnej kolumny zmieniały kolor np poczynając od A1 do A5.
Po uruchomieniu makra pojawia się błąd jak na zdjęciu. Dlaczego makro nie działa ?
W funkcji kolor i przyjmuje jaką wartość? Wg mnie jest to zero bo nigdzie jej nie przypisujesz. Jeśli chcesz współdzielić zmienna pomiędzy modułem i arkuszem zmień dim i As byte na global i As byte.
Dużo lepszym rozwiązaniem będzie schowanie deklaracji zmiennej do eventu przycisku i przekazanie go do funkcji kolor jako parametr
@Szymon81: W samej procedurze "kolor" nie przypisałem wartości " i ". Chciałem, aby zmieniała się ona w pętli for w evencie przycisku. Poprawiłem kod, ale znowu pojawia się błąd.
Szymon81 napisał(a):
W samej procedurze "kolor" nie przypisałem wartości " i ". Chciałem, aby zmieniała się ona w pętli for w evencie przycisku.)
Wartość i
magicznie nie przeniesie się do funkcji, musisz zrobić to jawnie: (...)"kolor " & i
.
Global i byte
w poprawionym kodzie nie ma sensu, wartość podajesz w parametrze a przy wywołaniu korzystasz z lokalnej zmiennej.
Żeby to działało usuń ten global i dodaj i
do wywołania funkcji
@Ales: Taki biegły w tym nie jestem. Możesz napisać jak powinno to wyglądać ?
@Szymon81: Próbowałem jeszcze tak jak na zdjeciach i to działa, ale jak bedzie trzeba zmienić kolor np 100 komórek to za dużo tych procedur by było, chyba, że można je utworzyć w pętli, tylko nie wiem jak.
Kod z twojego drugiego posta był dobry tylko wymagał dwóch poprawek i by działał w pętli.
Musisz nauczyć się podstaw, nikt za ciebie tego nie zrobi
Maybe it's better
#If VBA7 Then
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal milliseconds As LongPtr)
#Else
Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)
#End If
Sub test()
Dim i
For i = 1 To 5
Sleep 1000
ActiveSheet.Cells(i, 1).Interior.ColorIndex = i + 2
Next
End Sub