Soru Excel tablosuna tarihi el ile girince listeyi listbox da görüntülüyor

Katılım
20 Haziran 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Merhaba Arkadaslar,
userform ile excel doyasina kayit,kayit silme,kayit güncelleme ve kayit bulma islemlerini yaptim. baska bir userform da da iki tarih arasi ve secilen veriye göre verileri listbox listemele islemini yaptim,

sorunum su, user form ile girilen tarihi el ile dosya icinde el ile girmem gerekiyor, cünkü listbox tarihi o zaman gösteriyor
yardimci olursanaiz sevinirim.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,354
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Excel dosyasında yerine tarih formatını düzgün bir şekilde girerek bu sorunu çözebilirsiniz. Örneğin, tarih formatını "gg.aa.yyyy" şeklinde Excel'de girerseniz, user form ile girdiğiniz tarihe uygun şekilde verileri listeleme işlemini yapabilirsiniz.

Eğer Excel'de tarih formatını değiştirmekte zorlanıyorsanız, aşağıdaki adımları takip edebilirsiniz:
  1. Excel dosyasını açın.
  2. İlgili tarih sütununa tıklayarak tarih hücresini seçin.
  3. Sağ tıklayarak "Biçim Hücresi" seçeneğini seçin.
  4. Açılan pencereden "Tarih" sekmesini seçin.
  5. Buradan uygun tarih formatını seçerek kaydedin.
Bu işlemi yaptıktan sonra Excel dosyasında girilen tarihler user form ile girdiğiniz tarih formatına uygun şekilde gösterilecektir. Bu sayede listbox'ta istediğiniz şekilde verileri listeleyebilirsiniz.
 
Katılım
20 Haziran 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Excel dosyasında yerine tarih formatını düzgün bir şekilde girerek bu sorunu çözebilirsiniz. Örneğin, tarih formatını "gg.aa.yyyy" şeklinde Excel'de girerseniz, user form ile girdiğiniz tarihe uygun şekilde verileri listeleme işlemini yapabilirsiniz.

Eğer Excel'de tarih formatını değiştirmekte zorlanıyorsanız, aşağıdaki adımları takip edebilirsiniz:
  1. Excel dosyasını açın.
  2. İlgili tarih sütununa tıklayarak tarih hücresini seçin.
  3. Sağ tıklayarak "Biçim Hücresi" seçeneğini seçin.
  4. Açılan pencereden "Tarih" sekmesini seçin.
  5. Buradan uygun tarih formatını seçerek kaydedin.
Bu işlemi yaptıktan sonra Excel dosyasında girilen tarihler user form ile girdiğiniz tarih formatına uygun şekilde gösterilecektir. Bu sayede listbox'ta istediğiniz şekilde verileri listeleyebilirsiniz.
Öncelikle cevabınız için çok teşekkür ederim. Fakat dediğiniz gibi yapmama rağmen maalesef olmadı. Verilerin kayıt edildiği excel dosyasında(veri1) tarih formati ve verilerin filitrelendigi excel dosyasındaki(veri2) tarih formati dediğiniz gibi ayni. Sorun şu sanırım veri1 deki tarih veri2 ye gelmiyor. Veri 1 deki tarih kısmını el ile tarih girince, veri2 dosyasına hemen tarih geliyor. Ben veri1 dosyasına tüm bilgileri user form ile giriyorum. Sonra mecburen tarihi el ile giriyorum ki veri2 dosyasına aktarma olsun
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,354
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Userformdaki tarih yazdıgınız textbox tarih olarak dim ayarlarında ve dosya açılışında formatlanıyor mu bunu kontrol edin zira textboxlar formatlanmadığı sürece yazılanı duzyazı ( string ) olarak görür.


Excel VBA kullanarak bir TextBox'ın tarih formatını ayarlamak için birkaç adımı izlemeniz gerekir. Öncelikle, TextBox'ın değişiklik olayını (Change Event) kullanarak girilen tarihleri belirli bir formata (gg.aa.yyyy) dönüştürmelisiniz.
İşte bu işlemi nasıl yapacağınız:
1. UserForm Üzerinde TextBox Oluşturma
Öncelikle, bir UserForm oluşturun ve formun üzerine bir TextBox ekleyin.
2. VBA Kodunu Ekleyin
TextBox'ın değişiklik olayını kullanarak tarihi belirli bir formata dönüştürecek kodu ekleyin.
Adımlar:
  1. UserForm'a çift tıklayın: Bu, UserForm'un kod penceresini açacaktır.
  2. TextBox'ı Seçin: Aşağıdaki gibi kodu yazın.
Kod:

Private Sub TextBox1_Change()
Dim enteredText As String
Dim formattedDate As String
Dim dateParts() As String

' TextBox'taki metni al
enteredText = TextBox1.Text

' Metni "/" veya "." ile parçala
If InStr(enteredText, "/") > 0 Then
dateParts = Split(enteredText, "/")
ElseIf InStr(enteredText, ".") > 0 Then
dateParts = Split(enteredText, ".")
Else
Exit Sub
End If

' Parçaların sayısını kontrol et
If UBound(dateParts) <> 2 Then Exit Sub

' Tarih formatını kontrol et ve ayarla
If IsNumeric(dateParts(0)) And IsNumeric(dateParts(1)) And IsNumeric(dateParts(2)) Then
If Len(dateParts(0)) = 2 And Len(dateParts(1)) = 2 And Len(dateParts(2)) = 4 Then
formattedDate = dateParts(0) & "." & dateParts(1) & "." & dateParts(2)
TextBox1.Text = formattedDate
End If
End If
End Sub

Açıklama:
  • enteredText: TextBox'a girilen metni tutar.
  • dateParts: Giriş metnini "/" veya "." karakterine göre böler.
  • Format Kontrolü: Bölünmüş parçaların sayısını ve her bir parçanın uzunluğunu kontrol eder. Eğer format uygunsa, TextBox'a gg.aa.yyyy formatında metni geri yazar.
Bu kodu kullanarak, TextBox'a tarih girildiğinde otomatik olarak gg.aa.yyyy formatında görüntülenmesini sağlayabilirsiniz.
Dim Ayarı
Daha önce kodda kullanılan değişkenlerin boyutlarını belirledik:
  • enteredText ve formattedDate: Metin değişkenleri olarak ayarlanır.
  • dateParts(): Metin dizisi olarak ayarlanır.
Bu kodla birlikte TextBox'a girilen tarih değerleri istenilen formatta görüntülenecektir.
 
Son düzenleme:
Katılım
20 Haziran 2011
Mesajlar
7
Excel Vers. ve Dili
2003
TextBox' in adi txtDatum ve asagidaki gibi kodladim
Private Sub txtDatum_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Me.txtDatum = Format(CDate(Me.txtDatum), "dd.mm.yyyy")
End Sub
sizin icin bir sakincasi yoksa excel dosyasini mail adresinizi verirseniz posta yolu ile gönderebilirim. sanirim nerde hata yaptigimi bu sekilde daha net anlarsiniz
 
Katılım
20 Haziran 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Userformdaki tarih yazdıgınız textbox tarih olarak dim ayarlarında ve dosya açılışında formatlanıyor mu bunu kontrol edin zira textboxlar formatlanmadığı sürece yazılanı duzyazı ( string ) olarak görür.


Excel VBA kullanarak bir TextBox'ın tarih formatını ayarlamak için birkaç adımı izlemeniz gerekir. Öncelikle, TextBox'ın değişiklik olayını (Change Event) kullanarak girilen tarihleri belirli bir formata (gg.aa.yyyy) dönüştürmelisiniz.
İşte bu işlemi nasıl yapacağınız:
1. UserForm Üzerinde TextBox Oluşturma
Öncelikle, bir UserForm oluşturun ve formun üzerine bir TextBox ekleyin.
2. VBA Kodunu Ekleyin
TextBox'ın değişiklik olayını kullanarak tarihi belirli bir formata dönüştürecek kodu ekleyin.
Adımlar:
  1. UserForm'a çift tıklayın: Bu, UserForm'un kod penceresini açacaktır.
  2. TextBox'ı Seçin: Aşağıdaki gibi kodu yazın.
Kod:

Private Sub TextBox1_Change()
Dim enteredText As String
Dim formattedDate As String
Dim dateParts() As String

' TextBox'taki metni al
enteredText = TextBox1.Text

' Metni "/" veya "." ile parçala
If InStr(enteredText, "/") > 0 Then
dateParts = Split(enteredText, "/")
ElseIf InStr(enteredText, ".") > 0 Then
dateParts = Split(enteredText, ".")
Else
Exit Sub
End If

' Parçaların sayısını kontrol et
If UBound(dateParts) <> 2 Then Exit Sub

' Tarih formatını kontrol et ve ayarla
If IsNumeric(dateParts(0)) And IsNumeric(dateParts(1)) And IsNumeric(dateParts(2)) Then
If Len(dateParts(0)) = 2 And Len(dateParts(1)) = 2 And Len(dateParts(2)) = 4 Then
formattedDate = dateParts(0) & "." & dateParts(1) & "." & dateParts(2)
TextBox1.Text = formattedDate
End If
End If
End Sub

Açıklama:
  • enteredText: TextBox'a girilen metni tutar.
  • dateParts: Giriş metnini "/" veya "." karakterine göre böler.
  • Format Kontrolü: Bölünmüş parçaların sayısını ve her bir parçanın uzunluğunu kontrol eder. Eğer format uygunsa, TextBox'a gg.aa.yyyy formatında metni geri yazar.
Bu kodu kullanarak, TextBox'a tarih girildiğinde otomatik olarak gg.aa.yyyy formatında görüntülenmesini sağlayabilirsiniz.
Dim Ayarı
Daha önce kodda kullanılan değişkenlerin boyutlarını belirledik:
  • enteredText ve formattedDate: Metin değişkenleri olarak ayarlanır.
  • dateParts(): Metin dizisi olarak ayarlanır.
Bu kodla birlikte TextBox'a girilen tarih değerleri istenilen formatta görüntülenecektir.
Tekrar Merhaba, Altin üyelik kaydi yaptim. sanirim dosyayi yükledikten sonra yardimci olabilirisiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,851
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Excel dosyasındaki tarih sütununda hızlanma varsa bunu kaldırın sonrasında sütunu genişletin. Daha sonra tarihlerin hücrelerdeki hizalanmasını kontrol ediniz. Eğer sola hizalı ise bunlar tarih görünümlü METİNSEL veridir. Hücrelere F2+ENTER yaparak hepsinin sağa hizalanmasını sağlamanız gerekir.

Userformdan sayfaya kayıt yaparken bu sorunu aşmak için örneğin aşağıdaki gibi kullanmanız gerekir.

Sheets("Sayfa1").Cells(Son_Satır, 1) = CDate(TextBox1)
 
Katılım
20 Haziran 2011
Mesajlar
7
Excel Vers. ve Dili
2003
Merhaba,

Excel dosyasındaki tarih sütununda hızlanma varsa bunu kaldırın sonrasında sütunu genişletin. Daha sonra tarihlerin hücrelerdeki hizalanmasını kontrol ediniz. Eğer sola hizalı ise bunlar tarih görünümlü METİNSEL veridir. Hücrelere F2+ENTER yaparak hepsinin sağa hizalanmasını sağlamanız gerekir.

Userformdan sayfaya kayıt yaparken bu sorunu aşmak için örneğin aşağıdaki gibi kullanmanız gerekir.

Sheets("Sayfa1").Cells(Son_Satır, 1) = CDate(TextBox1)
Korhan Bey Merhaba,
userform da dediginiz gibi degisiklik yaptiktiktan sonra calisti. Ilginize ve verdiginiz bilgi icin cok tesekkür ediyorum. Iyi calismalar dilerim
 
Üst