VBA változók kivonása/összeadása (dátum)

VBA változók kivonása/összeadása (dátum)
2022-10-30T15:52:57+01:00
2022-10-31T16:24:09+01:00
2022-11-27T18:42:05+01:00
bukowensky
Sziasztok!

Egy apró, de számomra meglehetősen aggasztó problémába ütköztem...
Adott több változó (dátum és idő), amit szeretnék kivonni, vagy éppen összeadni, de sehogy sem sikerül és fogalmam sincs, hogy
mit rontottam el.

Az "ossz" változóban a két dátumot/időpontot kellene kivonnia egymásból, de 0 értéket ad vissza és a makró futtatásakor pedig hibás típust ad meg
Private Sub CommandButton1_Click() Dim today1, dat1, dat2, dat3, maivege, ossz As Integer today1 = Format(Date, "yyyy/mm/dd") + "18:00" dat1 = "2022.10.30" dat2 = "23:10" dat3 = "0:20" maivege = dat1 + dat2 ossz = maivege - today1 MsgBox ossz End Sub
Esetleg az a gond, hogy számként van formázva?
Mutasd a teljes hozzászólást!

  • Szerinted az "As Integer" rész mit jelent benne?
    Mutasd a teljes hozzászólást!
  • Próbáld meg ehhez hasonlóan. Nem tudom, hogy elment-e a privát üzenetem.

    Dim Ma, dat1, ossz As Date 'Év hónap nap Ma = Format(Date, "yyyy/mm/dd") Ma = Date 'Így kell hozzáadni órát: Ma = DateAdd("h", 18, Ma) dat1 = Format(Date, "yyyy/mm/dd") 'Kellenek a szóközök, de nem értem pontosan a feladatot, lehet órákat, vagy napot kell hozzáadni dat1 = "2022. 10. 30" 'https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/dateadd-function 'Óra hozzáadása dat1 = DateAdd("h", 23, dat1) 'Perc hozzáadása dat1 = DateAdd("n", 10, dat1) 'Így felesleges a dat2, mert azzal akartad megoldani, hogy a dat1 felvegye a dátumot órákkal és percekkel ossz = dat1 - Ma MsgBox ossz 'Szóval lehetne így is: Dim Mai_nap, Kezdet, Vege, Idotartam As Date Mai_nap = Format(Date, "yyyy/mm/dd") Mai_nap = Date Kezdet = DateAdd("h", 18, Mai_nap) 'Óra hozzáadása Vege = DateAdd("h", 23, Mai_nap) 'Perc hozzáadása Vege = DateAdd("n", 10, Vege) Idotartam = Vege - Kezdet MsgBox Idotartam
    Mutasd a teljes hozzászólást!
  • Dim today1, dat1, dat2, dat3, maivege, ossz As Integer
    A fennebbi sor nem azt csinalja amire gondolsz. ossz kivetelevel az egesz Variant tipusu, mert nem adtad meg konkretan a tipusokat. A te esetedben, today1, dat1, dat2, dat3, maivege String tipusu lesz, mert annak voltak inicializalva.
    Szoval a
    maivege = dat1 + dat2
    egyszeruen konkatenal 2 stringet, ez pedig:
    ossz = maivege - today1
    gozom sincs hogy mi lesz :) Ket stringet nem tudom hogy lehet kivonni egymasbol
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd