Takvim çalışması

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
userform textboxa tarih girmek için açılır takvimler

Sayın Özdemir, açılır userform takvim çalışmalarınız fazla sayıda olmakla birlikte her birinin farklı özelliklere sahip olduğu, dikkatle incelendiğinde anlaşılıyor. Bazıları ekranın belli bir yerinde açılıyor, bazılarıda tıklanan alanın tam üzerinde açılıyor. Benim kullanmak istediğim, userform üzerinde ki textboxların tarih tarih alanlarına yakın yerde ama kapatmayacak şekilde açılmalı. Textbox a tıklamak yeterli olmalı. Tarih girilecek Textbox ekranın dış kısmına yakın ise (alt, sol, sağ, üst) takvim bu sınırları algılayıp ekrandan dışarı çıkmayacak şekilde uygun yerde konumlanmalı. Takvime tıklayınca, açılmasına vesile olan textboxa tarihi yazdırıp kaybolmalı. Bunu dikkate alarak bir çalışma geliştirirseniz, çalışmalarınızdan memnuniyetle yararlanmak isterim. Çalışmalarınızda başarılar dilerim.

not:
API kodlarınızı 64Bit Offiece ortamında
Kod:
#if vba7 then
... ptrsafe function......
#else
.....function....
#end if
şeklinde deneyince hepsi 64bit office ortamında da çalıştı.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Genelde nesnelerin BackColor özellikleri kullanılıyor. Ben Örnek uygulamada texboxların MultiLine özelliklerini kullandım.

Userform1 için modül1 deki kodlar

Kod:
Public form As [COLOR="Red"]UserForm1[/COLOR]
Dim TextBox() As New Class1

Sub yukle()
Set form = [COLOR="red"]UserForm1[/COLOR]
Dim Kontrol As Control
Dim say As Integer
For Each Kontrol In form.Controls
If TypeName(Kontrol) = "TextBox" Then
say = say + 1
ReDim Preserve TextBox(1 To say)
Set TextBox(say).TextBoxGrup1 = Kontrol
End If

Next
[COLOR="red"]UserForm1[/COLOR].Show 0

End Sub

Class1 için kodlar

Kod:
Option Explicit
Public WithEvents TextBoxGrup1 As MSForms.TextBox

Private Sub TextBoxGrup1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBoxGrup1.MultiLine = True
Dim Kontrol As Control
For Each Kontrol In form.Controls
If form.Controls(Kontrol.Name).MultiLine = True Then
If TypeName(Kontrol) = "TextBox" Then
Takvimform.Show 0
'Takvimform.Top = form.Top
'Takvimform.Left = form.Left
Takvimform.Top = form.Top + form.Controls(Kontrol.Name).Top + form.Controls(Kontrol.Name).Height + 2
Takvimform.Left = form.Left + form.Controls(Kontrol.Name).Left + form.Controls(Kontrol.Name).Width + 2
Cancel = True
Exit For
End If
End If
Next

End Sub
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Sayın Özdemir, örnek bir dosya ekledim, girişte takvimform hakkında gerekenleri yazdım bakarsanız sevinirim. Özetle şu konulara çözüm bulamadım:
1-çift tık yerine fare ile tek tıklama ile takvim açılmalı
2-takvim, hangi yönde olursa olsun, asla ekran penceresi dışına çıkmamalı, fakat tıklanan alana yakın durmalı.
3-tıklanan textbox dışındaki diğer textboxlara veri girişi nasıl engellenecek.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sayın Özdemir, örnek bir dosya ekledim, girişte takvimform hakkında gerekenleri yazdım bakarsanız sevinirim. Özetle şu konulara çözüm bulamadım:
1-çift tık yerine fare ile tek tıklama ile takvim açılmalı
2-takvim, hangi yönde olursa olsun, asla ekran penceresi dışına çıkmamalı, fakat tıklanan alana yakın durmalı.
3-tıklanan textbox dışındaki diğer textboxlara veri girişi nasıl engellenecek.
Merhaba
1-text nesnelerine ait Click olayı yok
2-takvim ekran penceresinin dışına çıkmaması için gerekli düzenleme yapıldı
3-tıklanan textbox dışındaki diğer textbox nesnelerini engellemek için Textbox nesnelerinin Locked özelliklerini True yapıp kod ilede False ye çevrilebilir.


Diğer taraftan göndermiş olduğunuz dosya ile ilgili kodları çalıştırınca takvimform istenen yere gitmiyor nedendir bilmiyorum.

Ama benim dosyamda takvimform ekranın dışına çıkmıyor.

Herhalde versiyon farkı veya 64 bit sorunu olabilir.

Benim eklediğim dosyayı kendi bilgisayarında ve başka bilgisayarlarda dene sonucu gözlemle

Bu konu ile ilgili bendeki dosyanın düzgün çalıştığına dair görsel videoda ekliyebilirim.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu dosyada 3 adet userform var 1. userform sizin eklediğiniz diğerlerinide ben ekledim sizin eklediğiniz form bende çalışmıyor benim eklediklerim çalışıyor farklı bilgisayarlarda da deneyiniz.
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Bu dosyada 3 adet userform var 1. userform sizin eklediğiniz diğerlerinide ben ekledim sizin eklediğiniz form bende çalışmıyor benim eklediklerim çalışıyor farklı bilgisayarlarda da deneyiniz.
Sayın Özdemir,
Şu an 32 bit Office yüklü bilgisayarda çalışıyorum. Dosyaları inceleyeceğim. Yarın sabah aynı dosyaları 64 bit Office yüklü bilgisayarda da denedikten sonra durumu bildireceğim.
Dün hazırlayıp size gönderdiğim userform, 32 bit office ile takvimi açıyor, ama 64 bit ile açmıyor.
Eskiden 64 bit bilgisayarlarda hata veren takvim çalışmalarınızı bugün yine denedim. Hepsi sorunsuz çalışıyor. Tebrik ederim.
 

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,669
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
Merhaba Halit ve Ontanio hocam,
Öncelikle vaktinizi aldığım için kusura bakmayın.
Sonrasında sizlerin yaptıklarınıza alternatif olmayan sadece;
Kendimi geliştirmek amacı ile Kod bankasından bulduğum bir kodun üzerine çalıştım tek bir userformda (sayfada sutun gizlemeye gerek kalmadan):) bir takvim oluşturdum.
İşin sonunu getiremedim.
Active hücreye günleri doğru fakat comboboxlardan alınan ay ve yılı verisini hep "ocak 1905 " yazıyor.
Bunu nasıl düzeltebiliriz.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Merhaba Halit ve Ontanio hocam,
Öncelikle vaktinizi aldığım için kusura bakmayın.
Sonrasında sizlerin yaptıklarınıza alternatif olmayan sadece;
Kendimi geliştirmek amacı ile Kod bankasından bulduğum bir kodun üzerine çalıştım tek bir userformda (sayfada sutun gizlemeye gerek kalmadan):) bir takvim oluşturdum.
İşin sonunu getiremedim.
Active hücreye günleri doğru fakat comboboxlardan alınan ay ve yılı verisini hep "ocak 1905 " yazıyor.
Bunu nasıl düzeltebiliriz.
böyle denermisiniz.

Kod:
Private Sub CommandButton1_Click()
If CommandButton1.Caption = "" Then Exit Sub
ActiveCell.Value = Format(Format(CommandButton1.Caption, "00") & "." & Format(ComboBox2.Value, "00") & "." & Format(ComboBox1.Value, "0000"), "dd.mm.yyyy")
End Sub
 

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,669
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
Günaydın Halit bey ,
Çok teşekkür ederim.
Selametle kalınız.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Dosyada küçük düzeltmeler yapıldı ancak userform1 deki formu ve nesneleri siz eklediğiniz formun üzerine bende nesne ekledim sizin ekledikleriniz bende çalışmıyor ama benim eklediklerim çalışıyor
 

Ekli dosyalar

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,669
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
Dosyada küçük düzeltmeler yapıldı ancak userform1 deki formu ve nesneleri siz eklediğiniz formun üzerine bende nesne ekledim sizin ekledikleriniz bende çalışmıyor ama benim eklediklerim çalışıyor
Merhaba Halit bey,
Sizin takvim çalışmalarınız çok üst düzeyde bu şekilde daha sağlam yapılı bir çalışma yapabilmemiz için daha çok yol var.
Bizimkisi ilkokula başlayan bir öğrencinin AYŞE VELİ yazması gibi bir şey.
Bu arada verdiğiniz kodu userforma uyguladım.Sorun çözüldü.
Ayrıca commandbutonlarda hafta sonuna gelenlerin rengini değiştirecek kodu da ilave ettim.
Dosya ektedir.
Bu çalışma office 2010 sürümünde diğer sürümlerde çalışmıyor mu acaba ?
Çalışmıyorsa nedenini öğrenebilirsem sevinirim.:hihoho:
Çok teşekkür ederim.
Selametle kalınız.
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Bu dosyada 3 adet userform var 1. userform sizin eklediğiniz diğerlerinide ben ekledim sizin eklediğiniz form bende çalışmıyor benim eklediklerim çalışıyor farklı bilgisayarlarda da deneyiniz.
Sayın Özdemir,
3 adet form yüklü çalışmayı inceledim. Ben yüklediğim userformun TextBoxlarının Mouse Down olayına takvim formunun açılması için bir kod eklemiştim. Hataya o sebep oluyormuş. Kaldırınca sorun çözüldü. Çalışmalarınız artık 32 bit Office ile nasıl çalışıyorsa 64 bit Office ile de aynı şekilde çalışıyor. Bu konuda hiçbir sorun yok sorun yok. Ancak çözemediğim bir durum var. Şöyle ki, Sayfadan userform1 düğmesine tıklayınız. Userform açılıyor. mavi renkli textbox aktiftir. İmleç orada yanıp sönmektedir. Ancak siz oraya değil, sarı textboxa tıklayarak takvimformunu açınız, ve her hangi bir tarihe tıklayınız. tıkladığınız tarih, çift tıkladığınız textboxa değil, diğerine gitmektedir. Sonra aynı şeyi Userform2 ile yapınız, aynı şey oluyor. Fakat Userform3 ile aynı şey olmuyor. Form açıldığında siz nereyi seçerseniz tarih oraya gidiyor. Bunun sebebini çözerseniz bende bilmek isterim. Belki uzun oldu, ama kafanıza takılabilir diye vurgulamak istiyorum, bu son yazdığım durumun 32, 64 bit ile ilgisi yok. Dün akşam dikkatimi çekmişti, 64 bit bilgisayarda da özellikle denedim, hiç fark etmiyor.
Kolay gelsin.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sayın Özdemir,
3 adet form yüklü çalışmayı inceledim. Ben yüklediğim userformun TextBoxlarının Mouse Down olayına takvim formunun açılması için bir kod eklemiştim. Hataya o sebep oluyormuş. Kaldırınca sorun çözüldü. Çalışmalarınız artık 32 bit Office ile nasıl çalışıyorsa 64 bit Office ile de aynı şekilde çalışıyor. Bu konuda hiçbir sorun yok sorun yok. Ancak çözemediğim bir durum var. Şöyle ki, Sayfadan userform1 düğmesine tıklayınız. Userform açılıyor. mavi renkli textbox aktiftir. İmleç orada yanıp sönmektedir. Ancak siz oraya değil, sarı textboxa tıklayarak takvimformunu açınız, ve her hangi bir tarihe tıklayınız. tıkladığınız tarih, çift tıkladığınız textboxa değil, diğerine gitmektedir. Sonra aynı şeyi Userform2 ile yapınız, aynı şey oluyor. Fakat Userform3 ile aynı şey olmuyor. Form açıldığında siz nereyi seçerseniz tarih oraya gidiyor. Bunun sebebini çözerseniz bende bilmek isterim. Belki uzun oldu, ama kafanıza takılabilir diye vurgulamak istiyorum, bu son yazdığım durumun 32, 64 bit ile ilgisi yok. Dün akşam dikkatimi çekmişti, 64 bit bilgisayarda da özellikle denedim, hiç fark etmiyor.
Kolay gelsin.
Bu durumu yukarıdaki mesajlarımda açıklamıştım. herhalde anlaşılmadı
1-userform1 deki renkli text nesnelerini siz oluşturdunuz bu oluşturduğunuz nesneler bendeki bilgisayarda işlem yapmıyor yani text nesnesi olarak algılamıyor kod.
2-userform2 deki renkli nesneleri ben oluşturdum kod bu nesnelerde işlem yapıyor.
3-userform3 için söylüyecek bir şey yok o zaten çalışyor.

kısacası sizin eklemiş olduğunuz userform1 deki nesneler bende çalışmıyor.


bu dosyayı iyi irdeleyiniz çünkü göndermiş olduğum dosyalarda kodlarda küçük düzeltmeler var farkında olmayabilirsiniz.
 

Ekli dosyalar

Üst