Wpis z mikrobloga

Mirki mam problem ( ͡° ʖ̯ ͡°) Przygotowałem sobie pokaźny arkusz wraz z makrami. Wszystko bangla, ale gdy operuję na datach miesiące i dni zczytuje okej, ale roku już nie. Jeżeli sprawdzam z rokiem bieżącym to warunek nie jest wykonywany. Każdy inny rok poza wpisanym w komórkę działa. Datę pobieram z jednej z komórek w excelu, ponieważ VBA nie chciało mi przyjąć Year(Today()). Kod wklejam poniżej (a raczej jego wycinek). Jakieś sugestie?

If Year(S9) = 2016 Then
If Month(S9) >= 12 Then
For Column = 19 To 49
If Cells(14, Column).Value < Range("N8").Value Then
For Row = 16 To 23
Cells(Row, Column).Value = 2
If Cells(14, Column).Value = Range("N8").Value Then GoTo koniec
Next Row
End If
Next Column
koniec:
End If
End If

#programowanie #excel #vba
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

)@Elav: z tym rokiem, to spróbuj rok= year(date)) lub rok=year(date.now) albo coś w stylu rok=format(now, "yyyy").
na tel trudno mi spr, który sposób działa ( o ile działa ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Elav na internetach pisza takie Dim xdate As Date
xdate = Worksheets("sheet1").Range("A1")
If Month(Date) = Month(xdate) And Year(Date) = Year(xdate) Then
MsgBox "OK"
Else
MsgBox "not OK"
End If cos:
  • Odpowiedz
@Elav: podstawowy problem w tym, że używasz tam Year(S9) więc nie ma prawa działać. W VBA nie możesz sobie używać tak po prostu formuł takich jak w komórkach Excela, w tym wypadku S9 jest po prostu nazwą niezadeklarowanej zmiennej o wartości Empty. Rozwiązań problemu jest sporo, np:

If Year(Range("S9")) = 2016 Then

To też nie jest rozwiązania idealne, bo jeśli kod będzie umieszczony w module, to może dawać różne rezultaty w zależności od tego, jaki arkusz jest aktywny (chyba, że tak ma właśnie
  • Odpowiedz