Wpis z mikrobloga

#vba, #excel

Już mnie cholera trafia:

Mam taki kod:


Wartość w kolumnie o numerze 20, która jest wartością wyszukiwaną przez VLookUp jest datą i ma być powiększana o 1 dzień.

Wywala mi cały czas błąd 1004. Jeśli usunę + 1, wszystko działa ok. W tabeli w której są wyszukiane daty na pewno znajduje się podana wartość. Próbowałem dawać zmienną, w ten sposób:


ale to nic nie daje. Taki kod natomiast działa:


Ale nie chcę nadpisywać wartości w kolumnie 20, ani tworzyć kolejnej kolumny, bo to będzie oznaczało, że przegrałem :P
  • 4
  • Odpowiedz
@frugo90: Piszesz o dacie, a w kodzie jest godzina.
Nie napisałeś w jakim formacie jest ta data/godzina. Jeśli chcesz dodać godzinę do wyszukiwania to dodajesz nie 1 a 0,041666667
Dlaczego w ogóle vlookup a nie find.
Bez sensu to dla mnie.
  • Odpowiedz
@frugo90: wszędzie gdzie masz Cells(x,y) powinno być Cells(x,y).Value2. Cells jest właściwością typu Range, czyli obiektem, zatem działanie +1 nie ma sensu. Czemu zatem:

Cells(i, 20) = Cells(i, 20) + 1
Działa, choć zgodnie z tym co napisałem wyżej, nie powinno? Bo w VBA jest jeszcze coś takiego, jak właściwości domyślne i kod automatycznie tłumaczony jest na:

Cells(i, 20).Value = Cells(i, 20).Value + 1
Jednak to, czy właściwość domyślna zostanie użyta,
  • Odpowiedz
@brak_nicku: Dzięki wielkie ;) Stosowałem .Value i faktycznie nie działało. O .Value2 pomyślałem, bo gdzieś to widziałem (chyba nawet jakiś Twój kod, generator kombinacji czy coś takiego ;)), ale nie wiedziałem czym się różni od Value i nie spróbowałem nawet.

Jeszcze raz dzięki!
  • Odpowiedz