Me.Caption

Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Aşağıdaki kodlar (A) Userform1 içinde iken süper çalışıyor, bende userform1 içine bunları eklemek yerine modülün içine ekleyip userform1' de CommandButton1_click olayına "CALL transparan" yaparak modül içinden çalıştırma istedim. Lakin kodun sanıyorum ki me.caption kısmı hata veriyor. Nasıl düzeltebilir. Dosya ektedir

Sub transparan ()
Dim bytOpacity As Byte
bytOpacity = 100 ' şeffaflık ayarıyla buradan oynayabilirsiniz
hWnd = FindWindow("ThunderDFrame", Me.Caption)
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(Me.hWnd, 0, bytOpacity, LWA_ALPHA)
UserForm2.Show


(A) Userform1 içindeki kodlar, bunları modüle taşıdım. CommandButton1_Click olayının sub transparan () olarak değiştirdim

Kod:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" _
    (ByVal hWnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2&
Public hWnd As Long

Private Sub CommandButton1_Click()
Dim bytOpacity As Byte
bytOpacity = 100 ' şeffaflık ayarıyla buradan oynayabilirsiniz
hWnd = FindWindow("ThunderDFrame", Me.Caption)
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(Me.hWnd, 0, bytOpacity, LWA_ALPHA)
UserForm2.Show
End Sub
 

Ekli dosyalar

Son düzenleme:
Katılım
11 Aralık 2004
Mesajlar
12
Me.Caption yerine userform2.caption yazarsanız oluyor

Me.Caption yerine userform2.caption yazarsanız oluyor
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Sayın arcilingir denedim ama olmuyor
Userform1'in butonuna tıklayınca userform1 transparan olmalı, lakin direk hata veriyor

Sub transparan()
Dim bytOpacity As Byte
bytOpacity = 100 ' şeffaflık ayarıyla buradan oynayabilirsiniz
hWnd = FindWindow("ThunderDFrame", UserForm2.Caption)
Call SetWindowLong(UserForm2.hWnd, GWL_EXSTYLE, GetWindowLong(UserForm2.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(UserForm2.hWnd, 0, bytOpacity, LWA_ALPHA)
UserForm2.Show
End Sub
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Konu günceldir
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Me.Caption yerine

1) UserForm1.Caption
2) UserForm1.Me.Caption
3) UserForm2.Caption

hepsini denedim, başarılı olamadım. Userform1 içinde çalışan kod, modül içinde çalışmıyor, anlaşmış değilim, yardıma ihtiyacım var
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Userformu açtıktan sonra kodları niye çalıştırmıyorsunuz.

Kodları userformun içine koyarak çalıştırmayı deneyiniz.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Ben böyle bir uygulamayı kullansam kodların userformun içinde olmasını yeğlerim.
Alternatif kod
kod:

Kod:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Dim hWnd

Public Function TranslucentForm(frm As UserForm, TranslucenceLevel As Byte) As Boolean
SetWindowLong hWnd, (-20), 524288
SetLayeredWindowAttributes hWnd, 0, TranslucenceLevel, 2
TranslucentForm = Err.LastDllError = 0
End Function

Sub formac()
Dim lodialog As String
 lodialog = UserForm1.Caption
hWnd = FindWindow("ThunderDFrame", lodialog)
TranslucentForm UserForm1, 100
UserForm1.Show 0
End Sub
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Halit bey şimdi deneme fırsatım oldu, çok teşekkürler
 
Üst