Wpis z mikrobloga

#excel #vba

Hejka,

co tu jest zle.

'Range("E6").Value = "00:00"
'For i = 1 To 95
' Range("e6").Offset(i, 0) = Range("e6").Offset(i, 0) + "00:15"
'Next i

chce zeby od E6 w dol co komorke dodawal 15 minut a mi wychodzi cos a la

00:15
00:15
00:15
00:15
00:15
00:15

gdzie zwalilem?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

'Range("E6").Value = "00:00"

'For i = 1 To 95

' Range("e6").Offset(i, 0) = Range("e6").Offset(i, 0) + "00:15"

'Next i


@Nemootji: w drugim offsecie powinno byc cos typu offset(-1+i,0) ale nie chce przyjac takiego kodu :/
  • Odpowiedz
@Koliber86:
No generalnie błąd masz taki, że do komórki Range("e6").Offset(i, 0) w każdej interacji bierzesz jej wartość (czyli 0), zamiast wartość komórki wyżej i dodajesz 00:15, więc w efekcie masz 00:15.

Ale do dodawania czasu jest DATEADD -- podmień sobie w swoim kodzie 00:00 na 1, 00:15 na 2, a w pętli odwołuj się do komórki wyżej (czyli Range("e6").Offset(i - 1, 0)), to zobaczysz, że dodawanie liczb działa (kod niżej).
  • Odpowiedz
w drugim offsecie powinno byc cos typu offset(-1+i,0) ale nie chce przyjac takiego kodu :/


@Koliber86: to coś słabo się starałeś, bo kod jest prawidłowy i by rozwiązał problem.
W takich przypadkach zamiast pętli znacznie lepiej (przy małej ilości danych - mała różnica, ale przy większej - kod zadziała dużo szybciej) użyć wbudowaną funkcjonalność - na przykład seria danych:
  • Odpowiedz