• DİKKAT

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

Bitmeyen çile : Tarih formatı

  • Konbuyu başlatan Konbuyu başlatan GursoyC
  • Başlangıç tarihi Başlangıç tarihi
Belki işinize yarayabilir..

C++:
Option Explicit

Sub Test()
    With Sheets("siparis").Range("F2")
        If .Text <> CStr(Format(.Value, "dd.mm.yyyy")) Then
            .NumberFormat = "[$-tr-TR]mm.dd.yyyy;@"
        Else
            .NumberFormat = "[$-tr-TR]mm.dd.yyyy;@"
        End If
    End With
End Sub
 
Konuyu anlamak için yazıyorum.
Siz boş bir yeniden kitap oluşturup ve açın tarih formatını oraya bir yazın oradaki sonuç nasıl çıkacak.
bu durumda dosyanın ilgili sayfası bozuk veya sizin bilgisayarınızdaki bölgesel ayarlarındaki tarih formatına bakmak lazım
Benim bilgisayarımdaki tarih formatı böyle

Yeni Bit Eşlem Resmi (12).jpg
 
Konuyu anlamak için yazıyorum.
Siz boş bir yeniden kitap oluşturup ve açın tarih formatını oraya bir yazın oradaki sonuç nasıl çıkacak.
bu durumda dosyanın ilgili sayfası bozuk veya sizin bilgisayarınızdaki bölgesel ayarlarındaki tarih formatına bakmak lazım
Benim bilgisayarımdaki tarih formatı böyle

Halit hocam, dediğinizi yaptım. Format normal olarak gg.aa.yyyy şeklinde ayarlanıyor boş ve yeni bir sayfada. Onda sorun yok. Bendeki bölgesel ayarlar ekteki şekilde.

Söylediğiniz gibi, Üzerinde yazdığım kodla işlemler yapılan dosya bozuk büyük ihtimalle. Ben de bu PDF'ten elektronik tabloya çevrim yapılan sayfada, format eğer bozuksa ("gg.aa.yyyy" dışında hangi format olursa olsun) "gg.aa.yyyy" 'ye çevirecek bir kod yazmaya uğraşıyorum.
Biraz da yapay zekanın yardımı ile şu noktaya gelebildim.

Kod:
Private Sub CommandButton2_Click()
Dim cell As Range
    Set cell = ActiveCell

    Dim formatString As String
    formatString = cell.NumberFormatLocal

    Dim firstDotPosition As Long
    Dim secondDotPosition As Long
    firstDotPosition = InStr(1, formatString, ".")
    secondDotPosition = InStr(firstDotPosition + 1, formatString, ".")

    Dim beforeDotCharacter As String
    If firstDotPosition > 1 Then
        beforeDotCharacter = Mid(formatString, firstDotPosition - 1, 1)
    Else
        beforeDotCharacter = "Yok"
    End If

    Dim charsBeforeFirstDot As Long
    Dim charsBetweenDots As Long

    charsBeforeFirstDot = firstDotPosition - 1
    If secondDotPosition > 0 Then
        charsBetweenDots = secondDotPosition - firstDotPosition - 1
    Else
        charsBetweenDots = 0
    End If

    If firstDotPosition > 0 Then
        MsgBox "İlk noktanın yeri: " & firstDotPosition & vbCrLf & _
               "Noktadan önceki karakter: " & beforeDotCharacter & vbCrLf & _
               "İlk noktadan önceki karakter sayısı: " & charsBeforeFirstDot & vbCrLf & _
               "İlk noktayla ikinci nokta arasındaki karakter sayısı: " & charsBetweenDots
    Else
        MsgBox "NumberFormatLocal içinde nokta bulunamadı."
    End If
End Sub

Bunu biraz daha geliştirip formatı her durumda "gg.aa.yyyy" yapmaya çalışacağım.

Saygılarımla.
 

Ekli dosyalar

  • 11.jpg
    11.jpg
    296.3 KB · Görüntüleme: 4
  • 22.jpg
    22.jpg
    111 KB · Görüntüleme: 4
19 nolu mesajda pdf den bahsetmişsiniz ama tam açıklayıcı bilgi olmadığından sorun anlaşılamamıştır.
24 nolu mesajda ise pdf dosyasını dönüştürüp veya kopyalayıp alınan verilerde sıkıntı yaşadığınız anlaşılıyor.

Soru ilk başta pdf dosyasından aldığım verilerde veya kopyaladığımda bu sıkıntıyı alıyorum deseydiniz belki yardımcı olacaklar ona göre çözüm üretebilirler.
 
Belki işinize yarayabilir..

C++:
Option Explicit

Sub Test()
    With Sheets("siparis").Range("F2")
        If .Text <> CStr(Format(.Value, "dd.mm.yyyy")) Then
            .NumberFormat = "[$-tr-TR]mm.dd.yyyy;@"
        Else
            .NumberFormat = "[$-tr-TR]mm.dd.yyyy;@"
        End If
    End With
End Sub

Korhan hocam, verdiğiniz kod yine açıklama satırındakini hücreye yazdı. Ama yukarıda yazdığım kodlardaki if seçeneği için bu verdiğiniz kıstası kullanacağım çünkü gayet kısa ve net. Teşekkür ederim.
 
19 nolu mesajda pdf den bahsetmişsiniz ama tam açıklayıcı bilgi olmadığından sorun anlaşılamamıştır.
24 nolu mesajda ise pdf dosyasını dönüştürüp veya kopyalayıp alınan verilerde sıkıntı yaşadığınız anlaşılıyor.

Soru ilk başta pdf dosyasından aldığım verilerde veya kopyaladığımda bu sıkıntıyı alıyorum deseydiniz belki yardımcı olacaklar ona göre çözüm üretebilirler.

Halit hocam, 1 numaralı mesajımın altında PDF'ten elektronik tabloya döndüğümü belirtmiştim.
 
Belki işinize yarayabilir..

C++:
Option Explicit

Sub Test()
    With Sheets("siparis").Range("F2")
        If .Text <> CStr(Format(.Value, "dd.mm.yyyy")) Then
            .NumberFormat = "[$-tr-TR]mm.dd.yyyy;@"
        Else
            .NumberFormat = "[$-tr-TR]mm.dd.yyyy;@"
        End If
    End With
End Sub
İf ve else olan yerdeki aynı heralde dikkatten kaçmış.
Birde harici upload siteye yüklenebilinirmi dosya denemek için.
 
Hücreleri biçimlendir den
isteğe uyarlanmış dan
gg.aa.yyyy bunu
veya
g.a.yyyy

denermisinYeni Bit Eşlem Resmi (14).jpg
 
Peki bahsi geçen tarih 1 Şubat 2025 mi? Yoksa 2 Ocak 2025 mi?
 
Bendede ingilizce gibi oldu birde alttaki gibi deneyin.

Kod:
Range("F2").Value = CDbl(Range("F2").Value)
Range("F2").NumberFormat = "dd.mm.yyyy"
 
Görsel olarak 02.01.2025 görünen ama değer olarak 01.02.2025 görünen veriyi A2 Hücresine aldım.
Sizdeki görüntü ile aynı. Bakınca 02.01 görünüyor hücre değerine girince 01.02 görünüyor.
Gün formülü ile B2'ye 1 değerini,
Ay formülü ile C2'ye 2 değerini,
Yıl Formülü ile de D2'ye Yılı aldım,

Daha sonra Gün için Ay değerini, Ay için Gün değerini, Yıl için de yılı birleştirip tarih formatına çevirdim, E2'de görsel olarak ta içerik olarakta 02.01.2025 oldu.
Ne dersiniz :) ?
 

Ekli dosyalar

Arkadaşlar bir yanlış anlaşılmayı düzelteyim: Türkiye yapınca da düzelmiyor. Hangi ayarı yaparsak yapalım hücrede yazan değer olan 02.01.2025'e ulaşamıyoruz. Her seferinde hücre açıklamasında yazan 1 şubat 2025'e ulaşabiliyoruz.
Ama olması gereken değer 2 ocak 2025 yani hücrede yazan değer.
 
Arkadaşlar bir yanlış anlaşılmayı düzelteyim: Türkiye yapınca da düzelmiyor. Hangi ayarı yaparsak yapalım hücrede yazan değer olan 02.01.2025'e ulaşamıyoruz. Her seferinde hücre açıklamasında yazan 1 şubat 2025'e ulaşabiliyoruz.
Ama olması gereken değer 2 ocak 2025 yani hücrede yazan değer.

bendeki office de düzeldi muhtemelen bence sizin office sürümünde problem var. Direk dili değiştirip ayar yapınca düzeldi.
 
Arkadaşlar bir yanlış anlaşılmayı düzelteyim: Türkiye yapınca da düzelmiyor. Hangi ayarı yaparsak yapalım hücrede yazan değer olan 02.01.2025'e ulaşamıyoruz. Her seferinde hücre açıklamasında yazan 1 şubat 2025'e ulaşabiliyoruz.
Ama olması gereken değer 2 ocak 2025 yani hücrede yazan değer.
Kendi adıma Türkçeye çevirincede düzeldi ve önceden yazdığım kod ilede düzeldi diğer kodlar denemedim.
 
Geri
Üst