Takvim Button

Katılım
6 Mart 2024
Mesajlar
275
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Belki de benim alışkanlığımla ilgilidir ama naçizane bir öneri: Mouse hareketlerini azaltmak adına, seçilen tarihe çift tıklamanın o tarihi seçmeyi sağlama kodları harika olur
@GursoyC Önerin için çok teşekkürler. ✨

gerçekten çift tıklama ile tarih seçimi yapmak oldukça pratik ve kullanışlı oldu.
bende de kısa sürede çift tıklama alışkanlık oldu, artık ✅ kullanmıyorum bile.
TakvimButton.xlsm orijinal kodlarına ekleme yaptım, kodlar güncellendi.
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
@GursoyC Önerin için çok teşekkürler. ✨

gerçekten çift tıklama ile tarih seçimi yapmak oldukça pratik ve kullanışlı oldu.
bende de kısa sürede çift tıklama alışkanlık oldu, artık ✅ kullanmıyorum bile.
TakvimButton.xlsm orijinal kodlarına ekleme yaptım, kodlar güncellendi.
Hocam kolay gelsin. Senin Takvim kodlarını kendi dosyama uyarlayamadım.
Yapmak istediğim Alttaki örnek dosyamda Takvim resmine tıkladığımda senin Takvim formunun açılması ve tarih seçimi yapınca Hangi hücre seçili ise oraya tarihin yazılması. Denedim ama başaramadım. Zamanınız olunca Yardımcı olursanız sevinirim hocam.

Şimdiden teşekkürler.
 

Ekli dosyalar

Katılım
6 Mart 2024
Mesajlar
275
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Merhaba,
@volki_112 , Eklediğiniz dosyayı göremiyorum, ancak istediğiniz şey sanırım şöyle bir şey:
C++:
Sub RangeTarih()
    Dim RngDate As Range

    ' Tarihin yazılacağı hücreyi belirleyin.⚠
    ' Set RngDate = Range("A1")
    Set RngDate = ActiveCell

    TakvimForm.Tarih.Value = RngDate.Value
    TakvimForm.Show
    On Error GoTo HataKontrol
    RngDate.Value = Evaluate(ActiveWorkbook.Names("SecilenTarih").RefersTo)
    ActiveWorkbook.Names("SecilenTarih").Delete
    Exit Sub
HataKontrol:
    RngDate.Value = Date
End Sub

Excel eklentisi olarak kullanmak isterse TakvimHucre.xlam

Eklenti ile ilgili açıklama:
 
Son düzenleme:

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Merhaba,
@volki_112 , Eklediğiniz dosyayı göremiyorum, ancak istediğiniz şey sanırım şöyle bir şey:
C++:
Sub RangeTarih()
    Dim RngDate As Range

    ' Tarihin yazılacağı hücreyi belirleyin.⚠
    ' Set RngDate = Range("A1")
    Set RngDate = ActiveCell

    TakvimForm.Tarih.Value = RngDate.Value
    TakvimForm.Show
    On Error GoTo HataKontrol
    RngDate.Value = Evaluate(ActiveWorkbook.Names("SecilenTarih").RefersTo)
    ActiveWorkbook.Names("SecilenTarih").Delete
    Exit Sub
HataKontrol:
    RngDate.Value = Date
End Sub

Excel eklentisi olarak kullanmak isterse TakvimHucre.xlam

Eklenti ile ilgili açıklama:
eklenti işi çok iyi olmuş elinize sağlık hocam.
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Çok teşekkür ederim, beğenmenize sevindim 🔆
Hocam
Çok teşekkür ederim, beğenmenize sevindim 🔆
hocam hakkınızı helal edin bazı şeyleri inceleyip öğrenmeye çalışıyorum. Takvim formu açılışında veya ay değişimi yapıldığında takvim label ında örneğin Nisan ayının üstünde mavi renk oluyor. alttaki tarih leri tıklayınca kayboluyor. Bu mavi renki kaldırmak mümkün mü. Kodları inceledim ama bulamadım. Öğrenmek masadıyla soruyorum.
soldaki resim şeklinde açılıyor form sağdaki gibi Nisan yazısının üstünde Seçim rengi olmadan açılabilir mi
256868 256869
 
Katılım
23 Ocak 2023
Mesajlar
6
Excel Vers. ve Dili
Office 365 Türkçe
Elinize sağlık, bunu kendi dosyamıza uyarladıktan sonra mail ile gönderilen dosyada başkası tarafından da kullanılabiliyor mu?
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Elinize sağlık, bunu kendi dosyamıza uyarladıktan sonra mail ile gönderilen dosyada başkası tarafından da kullanılabiliyor mu?
hocam eklenti olarak kullanıyorsanız dosyayı açan kişinin pc sinde bu eklenti, eklenti klasörünün içindeyse sorunsuz olarak o pc de de çalışır. eğer eklenti klasöründe dosya yok ise çalışmaz. Eklenti olarak kullanmak istemezseniz dosyadaki kodları kendi dosyanıza uyarlamalısınız. o zaman kendi dosyanız nerede açılırsa açılsın kodlar kendi dosyanızın içinde olduğu için sorunsuz açılır.

Eklenti olarak kullanırsanız pc de eklenti yüklü ise o pc deki tüm excellerde çalışır. Eklentinin güzelliği bu. eklenti değil de kendi dosyanıza gömerseniz kodları sedece kendi excel dosyanızda çalışır. pc deki başka excellerde çalışmaz.
 
Katılım
6 Mart 2024
Mesajlar
275
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Nisan yazısının üstünde Seçim rengi olmadan açılabilir mi
Excel eklentisi olan TakvimHucre.xlam durumdan bahsediyorsunuz sanırım,
güncelleme yaparken o durumu atlamışım sanırım.
Eklentide ki TakvimForm isimli UserForm un UserForm_Initialize kodlarının en sonuna ( End Sub hemen üstüne)
GunFrame.SetFocus kodlarını ekleyiniz, quick & dirty cast bir yol ama işe yarar 😄
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Excel eklentisi olan TakvimHucre.xlam durumdan bahsediyorsunuz sanırım,
güncelleme yaparken o durumu atlamışım sanırım.
Eklentide ki TakvimForm isimli UserForm un UserForm_Initialize kodlarının en sonuna ( End Sub hemen üstüne)
GunFrame.SetFocus kodlarını ekleyiniz, quick & dirty cast bir yol ama işe yarar 😄
eyvallah hocam. combobox change olayına da ekledim. çok teşekkürler.
 
Katılım
6 Mart 2024
Mesajlar
275
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Elinize sağlık, bunu kendi dosyamıza uyarladıktan sonra mail ile gönderilen dosyada başkası tarafından da kullanılabiliyor mu?
ilk olarak beğenmenize sevindim , teşekkürler. 🎆

mail olarak göndereceğiniz dosya *.xlsm dosyası ve dosya içerisinde TakvimForm ve TakvimClass ekli ise karşı tarafta çalışacaktır.
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Merhaba,
@volki_112 , Eklediğiniz dosyayı göremiyorum, ancak istediğiniz şey sanırım şöyle bir şey:
C++:
Sub RangeTarih()
    Dim RngDate As Range

    ' Tarihin yazılacağı hücreyi belirleyin.⚠
    ' Set RngDate = Range("A1")
    Set RngDate = ActiveCell

    TakvimForm.Tarih.Value = RngDate.Value
    TakvimForm.Show
    On Error GoTo HataKontrol
    RngDate.Value = Evaluate(ActiveWorkbook.Names("SecilenTarih").RefersTo)
    ActiveWorkbook.Names("SecilenTarih").Delete
    Exit Sub
HataKontrol:
    RngDate.Value = Date
End Sub

Excel eklentisi olarak kullanmak isterse TakvimHucre.xlam

Eklenti ile ilgili açıklama:
hocam kolay gelsin. Eklentide bir sorun var. Örneğin excelde 500.satırda butona basıp eklentiyi açtığımda ekranda Takvim formu gözükmüyor. Userformun açılacağı koordinatları ayarlamıyor. Excelde baştaki satırlar sıkıntı yok ama aşağı doğru inince alttaki satırlarda userform ekrana yansımıyor. Zamanınız olunca bakarbilir misiniz.
 
Katılım
6 Mart 2024
Mesajlar
275
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
userform ekrana yansımıyor
excel tam ekran - takvim açan button pencerenin en altına ise - takvim userform Monitörün altında açılacağından gözükmüyor
aynı durum en sağ da olması durumunda da geçerli Monitörün dışına konumlanıyor
bu durum için bir özel bir çözüm üretmedim,
tarih yazılacak olan hücreyi kenarlardan biraz uzak konuma götürülürse ( scrool ) Takvim UserForm gözükecektir.
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
excel tam ekran - takvim açan button pencerenin en altına ise - takvim userform Monitörün altında açılacağından gözükmüyor
aynı durum en sağ da olması durumunda da geçerli Monitörün dışına konumlanıyor
bu durum için bir özel bir çözüm üretmedim,
tarih yazılacak olan hücreyi kenarlardan biraz uzak konuma götürülürse ( scrool ) Takvim UserForm gözükecektir.
Farkli bir kod ornegi ile cozume yaklastim sanirim. Tam cozum olursa buraya ekleyeyim
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
excel tam ekran - takvim açan button pencerenin en altına ise - takvim userform Monitörün altında açılacağından gözükmüyor
aynı durum en sağ da olması durumunda da geçerli Monitörün dışına konumlanıyor
bu durum için bir özel bir çözüm üretmedim,
tarih yazılacak olan hücreyi kenarlardan biraz uzak konuma götürülürse ( scrool ) Takvim UserForm gözükecektir.
hocam sizin eklentiyi ben biraz kendime göre değiştirdim. Userformun alttaki hücrelerde sorunsuz çalışması için aktive cell e göre konumlandırmasını yaptım aşağıdaki kod bloğu ile. Sizin eklentiyi biraz değiştirdiğim için orijinalinde bu kodu nereye koyacağımı bilemedim. Siz güncellemek isteyebilrsiniz diye kodu bırakıyorum. Bu kod bloğu userformu aktif hücre nerede olursa olsun onun yanında açar
Kod:
Private Sub UserForm_Initialize()
    Dim aktifHucre As Range
    Dim excelPencereSol As Long
    Dim excelPencereUst As Long
    Dim hucreSolWorksheet As Double
    Dim hucreUstWorksheet As Double
    Dim zoomSeviyesi As Double
    Dim aktifPencere As Window
    Dim xKoordinat As Long
    Dim yKoordinat As Long
    Dim kaydirilanGenislik As Double
    Dim kaydirilanYukseklik As Double
    Dim i As Long

    ' Aktif hücreyi al
    On Error Resume Next ' Eğer aktif hücre yoksa (örneğin hiçbir hücre seçili değilse) hatayı yoksay
    Set aktifHucre = Application.ActiveCell
    On Error GoTo 0 ' Hata işlemeyi tekrar aktif et

    ' Eğer aktif hücre yoksa, varsayılan bir konum belirle (isteğe bağlı)
    If aktifHucre Is Nothing Then
        Me.Left = Application.Left + (Application.Width - Me.Width) / 2 ' Ekranın ortasına yakın bir yatay konum
        Me.Top = Application.Top + (Application.Height - Me.Height) / 3 ' Ekranın üst ortasına yakın bir dikey konum
        Exit Sub
    End If

    ' Aktif Excel penceresini al
    Set aktifPencere = Application.ActiveWindow

    ' Excel penceresinin sol ve üst koordinatlarını al (ekrana göre)
    excelPencereSol = aktifPencere.Left
    excelPencereUst = aktifPencere.Top

    ' Hücrenin çalışma sayfası içindeki sol ve üst konumlarını al
    hucreSolWorksheet = aktifHucre.Left
    hucreUstWorksheet = aktifHucre.Top

    ' Zoom seviyesini al (yüzde olarak) ve ondalık formata çevir
    zoomSeviyesi = Application.ActiveWindow.Zoom / 100

    ' Yatay kaydırma miktarını hesapla
    kaydirilanGenislik = 0
    If aktifPencere.ScrollColumn > 1 Then
        For i = 1 To aktifPencere.ScrollColumn - 1
            kaydirilanGenislik = kaydirilanGenislik + aktifHucre.Worksheet.Columns(i).Width
        Next i
    End If

    ' Dikey kaydırma miktarını hesapla
    kaydirilanYukseklik = 0
    If aktifPencere.ScrollRow > 1 Then
        For i = 1 To aktifPencere.ScrollRow - 1
            kaydirilanYukseklik = kaydirilanYukseklik + aktifHucre.Worksheet.Rows(i).Height
        Next i
    End If

    ' Yaklaşık ekran koordinatlarını hesapla
    xKoordinat = excelPencereSol + Round(hucreSolWorksheet * zoomSeviyesi) - Round(kaydirilanGenislik * zoomSeviyesi)
    yKoordinat = excelPencereUst + Round(hucreUstWorksheet * zoomSeviyesi) - Round(kaydirilanYukseklik * zoomSeviyesi)

    ' UserForm'u hesaplanan konuma yerleştir
    Me.Left = xKoordinat + aktifHucre.Width + 23
    Me.Top = yKoordinat + 100
    

    ' StartUpPosition'ı Manual olarak ayarla (önemli!)
    Me.StartUpPosition = 0 ' 0 = Manual
End Sub
 
Katılım
6 Mart 2024
Mesajlar
275
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Eklenti dosyası için yazıyorum...

UserForm_Initialize içinde bulunan
C++:
'UserForm seçili hücrenin sağ yanında (+ ActiveCell.Width + 8 ) aç
  Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double
    With Me
        horizontaloffsetinpoints = (.Width - .InsideWidth) / 2
        verticaloffsetinpoints = 1
        Call GetPointCoordinates(ActiveCell, pointcoordinates)
        .StartUpPosition = 0
        .Top = pointcoordinates.Top - verticaloffsetinpoints + 8
        .Left = pointcoordinates.Left - horizontaloffsetinpoints + ActiveCell.Width + 8
    End With
kod parçasında .Top ve .Left kısmında revize yapabilirsin.
Benim önerim :
C++:
'UserForm seçili hücrenin sağ yanında (+ ActiveCell.Width + 8 ) aç
  Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double
    With Me
        horizontaloffsetinpoints = (.Width - .InsideWidth) / 2
        verticaloffsetinpoints = 1
        Call GetPointCoordinates(ActiveCell, pointcoordinates)
        .StartUpPosition = 0
        .Top = pointcoordinates.Top - Me.Height / 2
        .Left = pointcoordinates.Left - (Me.Width / 2) + (ActiveCell.Width / 2)
'        .Top = pointcoordinates.Top - verticaloffsetinpoints + 8
'        .Left = pointcoordinates.Left - horizontaloffsetinpoints + ActiveCell.Width + 8
    End With
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
488
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
dediğ
Eklenti dosyası için yazıyorum...

UserForm_Initialize içinde bulunan
C++:
'UserForm seçili hücrenin sağ yanında (+ ActiveCell.Width + 8 ) aç
  Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double
    With Me
        horizontaloffsetinpoints = (.Width - .InsideWidth) / 2
        verticaloffsetinpoints = 1
        Call GetPointCoordinates(ActiveCell, pointcoordinates)
        .StartUpPosition = 0
        .Top = pointcoordinates.Top - verticaloffsetinpoints + 8
        .Left = pointcoordinates.Left - horizontaloffsetinpoints + ActiveCell.Width + 8
    End With
kod parçasında .Top ve .Left kısmında revize yapabilirsin.
Benim önerim :
C++:
'UserForm seçili hücrenin sağ yanında (+ ActiveCell.Width + 8 ) aç
  Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double
    With Me
        horizontaloffsetinpoints = (.Width - .InsideWidth) / 2
        verticaloffsetinpoints = 1
        Call GetPointCoordinates(ActiveCell, pointcoordinates)
        .StartUpPosition = 0
        .Top = pointcoordinates.Top - Me.Height / 2
        .Left = pointcoordinates.Left - (Me.Width / 2) + (ActiveCell.Width / 2)
'        .Top = pointcoordinates.Top - verticaloffsetinpoints + 8
'        .Left = pointcoordinates.Left - horizontaloffsetinpoints + ActiveCell.Width + 8
    End With
Sizin verdiğiniz öneriye bir kaç dokunuş yaparak deneme yanılma ile en ideal oranı buldum kendimce. teşekkürler hocam. Bazen küçük resim ekranda birden fazla yerde kalabiliyor. Bilginiz olsun. Ben kendimce uyarlama farklı şekilde kullandığım için benim için sorun değil. bilgi amacıyla aktardım. Bu çalışma için tekrar teşekkürler hocam
Kod:
'UserForm seçili hücrenin sağ yanında (+ ActiveCell.Width + 8 ) aç
  Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double
    With Me
        horizontaloffsetinpoints = (.Width - .InsideWidth) / 2
        verticaloffsetinpoints = 1
        Call GetPointCoordinates(ActiveCell, pointcoordinates)
        .StartUpPosition = 0
        .Top = pointcoordinates.Top - 70
        .Left = pointcoordinates.Left + 75
'        .Top = pointcoordinates.Top - verticaloffsetinpoints + 8
'        .Left = pointcoordinates.Left - horizontaloffsetinpoints + ActiveCell.Width + 8
    End With
 

Ekli dosyalar

Üst