• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru Makro ile saatleri olan kutucuklar x koyma (24 saat sorunu)

  • Konbuyu başlatan Konbuyu başlatan bthn35
  • Başlangıç tarihi Başlangıç tarihi

bthn35

Altın Üye
Katılım
12 Kasım 2009
Mesajlar
201
Excel Vers. ve Dili
365 ProPlus TR
Merhaba,
Aşağıdaki makroyu kullanıyorum ancak bugün bir sorunla karşılaştım, saat sütununda (D sütünu) 16 - 24. gibi 24 yazdığında makro hata veriyor. Bunun için makroya ne eklemeliyim?


Kod:
Sub Saat()
    Dim i, ii, a, bl, s1, s2, bas, son
Dim n, y As Variant
    With CreateObject("VbScript.Regexp")
        .Pattern = "([\d:\s]+)-([\d:\s]+)"
        For i = 8 To Cells(Rows.Count, "D").End(3).Row
            If .test(Cells(i, "D").Value) Then
           
            y = Split(Cells(i, "D").Value, "+")
            For n = 1 To UBound(y) + 1
           
                 Set a = .Execute(Trim(y(n - 1)))
                bl = Split(a(0), "-")
                s1 = Trim(bl(0))
                If InStr(s1, ":") = 0 Then s1 = s1 & ":00"
                s2 = Trim(bl(1))
                If InStr(s2, ":") = 0 Then s2 = s2 & ":00"
                bas = Hour(s1) * 2 + IIf(Minute(s1) = 30, 1, 0) - 7
                son = Hour(s2) * 2 + IIf(Minute(s2) = 30, 0, -1) - 7
               
                For ii = bas To son
                    Cells(i, ii).Value = "x"
                Next ii
                Next n
            End If
        Next i
    End With

End Sub
 
Merhaba,

Normalde 24:00 diye bir saat yoktur. Bunun yerine 00:00 olarak kullanmanız gerekir.

Kodlarınızda saatin önüne günü de eklerseniz daha sağlıklı sonuçlar alırsınız. Örnek olarak aşağıdaki gibi kurgulamanız gerekir.

18.04.2023 16:00:00
19.04.2023 00:00:00
 
Aşağıdaki kodlar çözdüm sorunu, teşekkür ederim.

Kod:
bas = Split(s1, ":")(0) * 2 + IIf(Val(Split(s1, ":")(1)) = 30, 1, 0) - 6
son = Split(s2, ":")(0) * 2 + IIf(Val(Split(s2, ":")(1)) = 30, 0, -1) - 6
 
Geri
Üst