Userform geçişlerinde güncelleme sorunu

petsiye

Altın Üye
Katılım
28 Eylül 2009
Mesajlar
139
Excel Vers. ve Dili
Office 2019 TR 32 Bit
Altın Üyelik Bitiş Tarihi
10-05-2029
Merhaba,

Userform içerisine aşağıdaki kod yardımıyla Userformu Manuel açarken Text Box içindeki verilerin güncellemesini yapıyorum. Fakat Herhangi bir Userformdan, Aşağıdaki kodları içinde yazılı olan userformu Userform1.Hide Userform2.Show kodu ile açtığımda Aşağıdaki kod yazılı olmasına rağmen TextBox içindeki verilerin güncellenmesini sağlayamıyorum. Acaba sebebi ne olabilir ?

Cevap verebilecek olan forum katılımcılarına şimdiden Teşekkür Ederim.

Userform2 içindeki kod aşağıdaki gibidir.

Private Sub UserForm_Initialize()
TextBox1 = ThisWorkbook.Worksheets("ÖRNEK 1").Range("E160").Value & " Hisse "
If TextBox1.Text = " Hisse " Then
TextBox1 = ""
End If
End Sub
 
Katılım
11 Temmuz 2024
Mesajlar
42
Excel Vers. ve Dili
Excel 2021 Türkçe
VBA'da bir UserForm'un Initialize olayı, form ilk kez yüklendiğinde (yani belleğe alındığında) tetiklenir. Eğer form daha önce yüklenmişse ve sadece Show metodu ile görünür hale getiriliyorsa, Initialize olayı tekrar tetiklenmez. Bu durumda, UserForm2 zaten bellekte yüklü olduğu için, Initialize olayı çalışmıyor ve TextBox1 güncellenmiyor.

Çözüm 1: Kodu Activate Olayına Taşıma

Initialize olayı yerine, kodunuzu Activate olayına taşıyabilirsiniz. Activate olayı, form her etkinleştiğinde (gösterildiğinde) tetiklenir. Böylece, UserForm2 her gösterildiğinde TextBox1 içeriği güncellenecektir.
Yapmanız Gerekenler:
  1. UserForm2 içinde kodunuzu Initialize olayından silin.
  2. Aşağıdaki kodu Activate olayına ekleyin:
    Kod:
    Private Sub UserForm_Activate()
    TextBox1 = ThisWorkbook.Worksheets("ÖRNEK 1").Range("E160").Value & " Hisse "
    If TextBox1.Text = " Hisse " Then
    TextBox1 = ""
    End If
    End Sub
    Çözüm 2: Formu Gösterirken Yeniden Yükleme
    Eğer kodunuzu Initialize olayında tutmak istiyorsanız, UserForm2'yi göstermeden önce yeniden yüklemeniz gerekir. Bunun için Unload ifadesini kullanarak formu bellekten kaldırabilir ve sonra tekrar Show ile gösterebilirsiniz.
    Yapmanız Gerekenler:
    UserForm1'den UserForm2'yi açarken kullandığınız koda aşağıdaki şekilde güncelleyin:
    Kod:
    ' UserForm1 içindeki bir butonun tıklama olayı veya ilgili kod bloğu
    Private Sub CommandButton1_Click()
        ' UserForm1'i gizle
        Me.Hide
        
        ' UserForm2'yi bellekten kaldır
        Unload UserForm2
    
        ' UserForm2'yi göster
        UserForm2.Show
    End Sub
 

petsiye

Altın Üye
Katılım
28 Eylül 2009
Mesajlar
139
Excel Vers. ve Dili
Office 2019 TR 32 Bit
Altın Üyelik Bitiş Tarihi
10-05-2029
Sayın @pitchoute ,

Nokta atışı cevabınız için çok teşekkür ederim.
 
Üst