Çözüldü Class ile Textbox Renklendirme

Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.
Class ile aktif textboxu renklendirdim.
Yapamadığım şey örnek olarak resimdeki gibi renkli textboxların renkleri aynı kalması textboxtan ayrılınca.
Örnekte maus userforma gelince taextbox rengi beyaz oluyor normalde textbox renk ne ise o olmalı.

https://dosya.co/ff9osyzs30kj/Classs_Textbox_Renk.xlsm.html



PHP:
Dim sec() As New TextClass

Private Sub UserForm_Initialize()
    Dim a As Byte
    
    For Each aa In Me.Controls
        If TypeName(aa) = "TextBox" Then
            a = a + 1
             ReDim Preserve sec(a)
            Set sec(a).textboxx = aa
        End If
    Next
    
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
     Dim a As Byte
    For Each aa In Me.Controls
        If TypeOf aa Is MSForms.TextBox Then
            aa.BackColor = vbWhite
        End If
    Next
End Sub
PHP:
Public WithEvents textboxx As MSForms.TextBox

Private Sub textboxx_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

  Dim Ctrl As Control
    For Each Ctrl In UserForm1.Controls
        If TypeName(Ctrl) = "TextBox" Then
            Ctrl.BackColor = vbWhite
        End If
    Next
    textboxx.BackColor = vbYellow
    
End Sub
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Textboxlar üzerine gelince sarı, çıkınca orjinal rengi olsun istiyorsanız;

Class;
Kod:
Public WithEvents textboxx As MSForms.TextBox
Private Sub textboxx_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    textboxx.BackColor = vbYellow
End Sub
Userform;
Kod:
Dim sec() As New TextClass
Private Sub UserForm_Initialize()
    Dim a As Byte
    For Each aa In Me.Controls
        If TypeName(aa) = "TextBox" Then
            a = a + 1
             ReDim Preserve sec(a)
            Set sec(a).textboxx = aa
            aa.Tag = aa.BackColor
        End If
    Next
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
     Dim a As Byte
    For Each aa In Me.Controls
        If TypeOf aa Is MSForms.TextBox Then
            aa.BackColor = aa.Tag
        End If
    Next
End Sub
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Public WithEvents textboxx As MSForms.TextBox
Private Sub textboxx_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    textboxx.BackColor = vbYellow
    UserForm1.Tag = textboxx.Name
End Sub
Kod:
Dim sec() As New TextClass
Private Sub UserForm_Initialize()
    Dim a As Byte
    For Each aa In Me.Controls
        If TypeName(aa) = "TextBox" Then
            a = a + 1
            ReDim Preserve sec(a)
            Set sec(a).textboxx = aa
            aa.Tag = aa.BackColor
        End If
    Next
    UserForm1.Tag = "Textbox1"
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Controls(UserForm1.Tag).BackColor = Controls(UserForm1.Tag).Tag
End Sub
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Veysel Hocam elinize sağlık süper olmuş.
Sadece gifteki gibi mesela en alt sağdaki tektboxa veri girip mausun tuşuna basılı tutarak diğer textboxa geçince renk kaybolmuyor.
Olmasada sorun değil.

Birde alttaki gibi değiştirdim yani tıklayınca renkleniyor.
Ayrıyeten Tab tuşuna basıncada aktif textbox renklenebilir mi?
Private Sub textboxx_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)


 
Son düzenleme:

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Veysel Hocam elinize sağlık süper olmuş.
Sadece gifteki gibi mesela en alt sağdaki tektboxa veri girip mausun tuşuna basılı tutarak diğer textboxa geçince renk kaybolmuyor.
Olmasada sorun değil.
Nerden aklınıza geliyor böyle şeyler "mausun tuşuna basılı diğer textbox a geçmek";
Kod:
Public WithEvents textboxx As MSForms.TextBox
Private Sub textboxx_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Ctrl As Control
    For Each Ctrl In UserForm1.Controls
        If TypeName(Ctrl) = "TextBox" Then
            Ctrl.BackColor = Ctrl.Tag
        End If
    Next
    textboxx.BackColor = vbYellow
End Sub
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Nerden aklınıza geliyor böyle şeyler "mausun tuşuna basılı diğer textbox a geçmek";
Kod:
Public WithEvents textboxx As MSForms.TextBox
Private Sub textboxx_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Ctrl As Control
    For Each Ctrl In UserForm1.Controls
        If TypeName(Ctrl) = "TextBox" Then
            Ctrl.BackColor = Ctrl.Tag
        End If
    Next
    textboxx.BackColor = vbYellow
End Sub
:)
Aklıma gelmiyorda denerken denk geldi.Kod çalıştı bu arada.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Class;
Kod:
Public WithEvents textboxx As MSForms.TextBox
Private Sub textboxx_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 9 Then
        Ctrl = Replace(textboxx.Name, "TextBox", "") + 1
        textboxx.BackColor = textboxx.Tag
        If Ctrl = 13 Then Ctrl = 1
        UserForm1.Controls("TextBox" & Ctrl).BackColor = vbYellow
    End If
End Sub
Private Sub textboxx_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Ctrl As Control
    For Each Ctrl In UserForm1.Controls
        If TypeName(Ctrl) = "TextBox" Then
            Ctrl.BackColor = Ctrl.Tag
        End If
    Next
    textboxx.BackColor = vbYellow
End Sub
Userform1;
Kod:
Dim sec() As New TextClass
Private Sub UserForm_Initialize()
    Dim a As Byte
    For Each aa In Me.Controls
        If TypeName(aa) = "TextBox" Then
            a = a + 1
            ReDim Preserve sec(a)
            Set sec(a).textboxx = aa
            aa.Tag = aa.BackColor
        End If
    Next
    TextBox1.BackColor = vbYellow
End Sub
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Sadece textboxlardan ayrılınca eski renge dönmesi kaldı hocam.
Son verdiğiniz kod ile sarı renk devamlı duruyor userforma getirsem bile mausu.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Class_Module işlemi pek uğraştığım bir mevzu olmadığından ben biraz tabiri yerindeyse HİLE yoluna başvurarak bir şey düşündüm.
Ekteki belgede de uyguladım.
Uygulamanın gerçekleşmesini sağlayan şey TextBox'ların arkalarında konumlandırdığım birer adet LABEL nesnesi.

Class_Module yöntemiyle Sayın @veyselemre olayı neticelendirecektir mutlaka.
.
 

Ekli dosyalar

Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.
Class_Module işlemi pek uğraştığım bir mevzu olmadığından ben biraz tabiri yerindeyse HİLE yoluna başvurarak bir şey düşündüm.
Ekteki belgede de uyguladım.
Uygulamanın gerçekleşmesini sağlayan şey TextBox'ların arkalarında konumlandırdığım birer adet LABEL nesnesi.

Class_Module yöntemiyle Sayın @veyselemre olayı neticelendirecektir mutlaka.
.
Ömer hocam sağolun dosyayı deneyemiyorum malum sebepten.Açıklamanızdan label eklemiş oldunuzu okudum.Class olunca labele gerek yok.Aslında Veysel hocamızın son verdiği kod tam oldu userforma geçince sarı renk kaybolmasa bile.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
ALTIN ÜYELİK durumunu atlamışım, dosya BURADA.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Linkini verdiğim dosyayı inceleyiniz.:cool:

DOSYAYI INDIR

.
Evren hocam yolladığınız dosyaya alttaki kodu ekleyince artık istediğim oldu sağolun.
PHP:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
     Dim a As Byte
    For Each aa In Me.Controls
        If TypeOf aa Is MSForms.TextBox Then
            aa.BackColor = aa.Tag
        End If
    Next
End Sub
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.
Class_Module işlemi pek uğraştığım bir mevzu olmadığından ben biraz tabiri yerindeyse HİLE yoluna başvurarak bir şey düşündüm.
Ekteki belgede de uyguladım.
Uygulamanın gerçekleşmesini sağlayan şey TextBox'ların arkalarında konumlandırdığım birer adet LABEL nesnesi.

Class_Module yöntemiyle Sayın @veyselemre olayı neticelendirecektir mutlaka.
.
Ömer hocam dosyayı inceledim mesela 500 adet textbox varsa herbirinin arkasına label gizlemek zaman alır ve gereksiz olur.Ve her bir textbox için ayrı kod sub yazılmalı sizin örnekte.işte bundan kurtulmak için class yapmışlar.Bende fazla bilgim yok fakat araştırmıştım çok zor değil esasen.Let,get ve set olaylarıda var classta bunlarıda çözdüm lakin dosyama göre çözüm bulamamıştım.Veysel hocamız Tag özelliğine göre bulmuş ben konuyu açmadan önce mantıken önce textboxların backcolor değerlerini diziye alıp sonra bu değerleri kullanmak istemiştim olmamıştı.
Class olayını incelemenizi tavsiye ederim bazı yerlerde çok işe yarıyor araştırmalarımdan öğrendiğim.
Neyse herkesin eline sağlık sorunum giderildi.
 
Üst