Zapis datuma + ure za cel mesec

Pomoč pri izdelavi makrov
Odgovori
capirossi
Prispevkov: 25
Pridružen: Če Dec 10, 2009 12:51 pm

Zapis datuma + ure za cel mesec

Odgovor Napisal/-a capirossi »

Spet bi potreboval rešitev zato se obračam na vas. Torej želim, da bi v celico B1 vnesel mesec (od 1 do 12), v celico B2 leto, v celico B3 pa minute program pa bi mi v stolpec D generiral naslednje zapise:

npr.....B1 = 2
..........B2 = 2012
..........B3 = 15

........D...........
1.2.2012 00:15
1.2.2012 01:15
1.2.2012 02:15
.
.
.
29.2.2012 21:15
29.2.2012 22:15
29.2.2012 23:15

Jaz sem uporabil naslednjo kodo:

Koda: Izberi vse

Private Sub CommandButton1_Click()
Dim dnevi_v_mesecu As Integer
Dim prestopno_leto As Boolean
Dim konec_na_listu As Long
intYear = Range("B2")
intMonth = Range("B1")
dnevi_v_mesecu = 0
prestopno_leto = False

konec_na_listu = Range("D65536").End(xlUp).Row
For zanka = 2 To konec_na_listu
 Range("D" & zanka) = ""
Next
        
If intYear Mod 4 = 0 Then prestopno_leto = True
If intYear Mod 400 = 0 Then prestopno_leto = True
   
Select Case intMonth
      Case 1, 3, 5, 7, 8, 10, 12
         dnevi_v_mesecu = 31
      Case 4, 6, 9, 11
         dnevi_v_mesecu = 30
      Case 2
         If prestopno_leto = True Then
            dnevi_v_mesecu = 29
         Else
            dnevi_v_mesecu = 28
         End If
   End Select

For stej_datum = 1 To dnevi_v_mesecu
    For ura = 0 To 23
    Range("D" & stej_datum + (24 * ura)) = DateSerial(intYear, intMonth, stej_datum) & " " & TimeSerial(ura, Range("B3"), 0)
    Next
Next
End Sub
Pri kodi deluje vse razen zapisa v stolpec D...sem poizkušal že na več načinov pa nisem bil uspešen.

Koda: Izberi vse

Range("D" & ?????????) = DateSerial(intYear, intMonth, stej_datum) & " " & TimeSerial(ura, Range("B3"), 0)
Prosim, če mi lahko pomagate popraviti zgornji stavek tako da bi mi zapis deloval pravilno.

Za rešitev se vam že v naprej zahvaljujem.

Lep pozdrav, Loris
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Zakaj se trudite in računate vrstico, če pa VESTE, da mora iti naslednji izračun v naslednjo vrstico, torej:

Koda: Izberi vse

  vrstica = 1
  For stej_datum = 1 To dnevi_v_mesecu
      For ura = 0 To 23
        Range("D" & vrstica) = DateSerial(intYear, intMonth, stej_datum) & " " & TimeSerial(ura, Range("B3"), 0)
        vrstica = vrstica + 1
      Next
  Next
V ostali del kode pa se nisem spuščal, temveč sem vam rešil tisto, kar ste želeli.
lp,
Matjaž Prtenjak
Administrator
capirossi
Prispevkov: 25
Pridružen: Če Dec 10, 2009 12:51 pm

Odgovor Napisal/-a capirossi »

Najlepša hvala za rešitev...ostali deli kode delujejo tako da kar se tistega tiče ni problema.
Bom moral začeti stvari rešvati z manj kompliciranja.

Še enkrat hvala in lep pozdrav.
Odgovori