Nie kompiluje makra w Visual Basic

0

Witam!
Mam problem ze skompilowaniem makra w VBS, pod arkusz w excelu. W makrze ma chodzić o to, że 30 dni przed daną datą wyświetla się komunikat na ekranie o konieczności wykonania serwisu.
Mam taki kod:

Private Sub Workbook_Open()

If Range(Cells(11, 11), Cells(300, 11)).Value > DateAdd("d", 30, Date) Then

MsgBox "Za 30 dni upływa termin"
End If

End Sub

oraz wcześniejszy:

Private Sub Workbook_Open()

If .Cells(i, "K11:K300").Value > DateAdd("d", 30, Date) Then

MsgBox "Za 30 dni upływa termin"
End If

End Sub

Jak skompilować kod aby działał poprawnie? Wydaje mi się że składnia tego drugiego jest prawidłowa, tyle że nie wiem jak ustalić parametry które komórki ma sprawdzać.
Dziekuję bardzo za pomoc

1

Widzę, że nie miałeś z tym zbyt wiele do czynienia.
Jeżeli w kolumnie "K11:K300" masz podane jakieś daty, to sprawdzenie ile dni pozostało do przeglądu można zrobić tak:

Sub test()
Dim dat As Range, daty As Range

Set daty = Range("K11:K300")

For Each dat In daty
  If DateDiff("d", Date, CDate(dat), vbMonday) = 30 Then
   MsgBox "Za 30 dni upływa termin"
  End If
Next dat

Set daty = Nothing
End Sub
0

Z makrami i Visual Basic nie miałem praktycznie żadnego doświadczenia, głównie programowanie w Pascalu, Delphi i C++, teraz jeszcze Java.
Z tym co podałem nie da się nic zrobić? Kompletnie źle napisane?
Dziękuję za odpowiedź, zaraz sprawdzam

Edit: Niestety nie wchodzi. Komunikat : Type mismatch

1

Bo w komórkach data jest reprezentowana w formacie, ktorego excel nie rozpoznaje. Najlepiej, żeby ta data była w takim formacie, jak masz w ustawieniach regionalnych.
BTW - nie podałeś żadnej próbki danych - ciężko coś więcej podpowiedzieć.

0

Pokombinowałem z datami i miałeś rację, wpisuję teraz format taki jak w zegarze systemowym i program normalnie kompiluje w VB, ale w programie gdy uruchamiam makro jest tylko kółko przy kursorze ( myśli ) i nie wyświetla się nic. Trzeba coś więcej skonfigurować? Jeśli dasz radę mogę podrzucić Ci na maila arkusz kalkulacyjny w którym ma to działać.

Pozdrawiam

0

Jeżeli się uruchamia, to sprawdź to w trybie "Debug", tzn w makrze ustaw pułapkę (breakpoint) na lini zaczynajacej się od If DateDiff....
potem wciskaj F8 - krokowo przechodoząc dalej. Po najechaniu kursorem na dat będziesz widział, czy wartości się zmieniają.
Jeżeli po uruchomieniu makra kursor przyjmuje postać "zajętości" - to może kod działa poprawnie, ale ilość wierszy w arkuszu jest tak duża, że trzeba trochę poczekać. Ma znaczenie też, czy jakakolwiek z dat w komórkach excela spełnia warunek: DateDiff(..) = 30

1 użytkowników online, w tym zalogowanych: 0, gości: 1