• pasang iklan

Tampilan Userform Menjadi Transparan


Pada tutorial sebelumnya kita belajar cara membuat UserForm tampil di System Tray, baik secara otomatis ketika file dibuka atau di aktifkan dengan menggunakan tombol tertentu. Dan tutorial kali ini masih ada hubungannya dengan UserForm, yakni tentang cara membuat tampilan UserForm menjadi transparan.

Untuk lebih jelasnya, lihat dan bandingkan 2 gambar berikut :
Membuat UserForm Transparan
Untuk mengatur transparansi sebuah UserForm adalah dengan memasukkan nilai antara angka 0 sampai dengan 255, dimana semakin kecil angka yang dimasukkan maka objek akan semakin menghilang, dan sebaliknya semakin besar nilai yang dimasukkan maka objek akan tampil secara utuh (solid).

Untuk membuat UserForm memiliki transparasi seperti ini, maka yang harus dilakukan terlebih dahulu adalah dengan membuat UserForm itu sendiri. dan selanjutnya ...

Membuat Module dan Kode untuk Module
Klik Insert > Module untuk membuat sebuah Module baru, kemudian tempelkan kode ini di dalamnya.
Option Explicit
Private Const C_USERFORM_CLASSNAME = "ThunderDFrame"
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYEREs = &H80000
Private Const LWA_ALPHA = &H2&
Private Const C_ALPHA_FULL_TRANSPARENT As Byte = 0
Private Const C_ALPHA_FULL_OPAQUE As Byte = 100

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

Function SetFormOpacity(UF As MSForms.UserForm, Opacity As Byte) As Boolean
Dim UFHWnd As Long
Dim WinL As Long
Dim Res As Long
UFHWnd = HWndOfUserForm(UF)
Res = SetWindowLong(UFHWnd, GWL_EXSTYLE, WinL Or WS_EX_LAYERED)
Res = SetLayeredWindowAttributes(UFHWnd, 0, Opacity, LWA_ALPHA)
End Function Function HWndOfUserForm(UF As MSForms.UserForm) As Long
Dim UFHWnd As Long
Dim Cap As String

Cap = UF.Caption
UFHWnd = FindWindow(C_USERFORM_CLASSNAME, Cap)
If UFHWnd <> 0 Then
    HWndOfUserForm = UFHWnd
    Exit Function
End If
End Function

Kode untuk UserForm
Saya berasumsi dalam project VBA Anda sudah terdapat sebuah UserForm. Lihat Kode untuk UserForm tersebut (View code) kemudian tempelkan kode berikut di dalamnya.
Private Sub UserForm_Activate()
Dim T As Boolean
T = SetFormOpacity(UF:=Me, Opacity:=150)
End Sub

Penjelasan
Kode di atas akan secara otomatis dijalankan ketika UserForm di aktifkan, yakni dengan menjalankan sebuah perintah transparasi, dengan nilai transparasi 150.
Ubah sesuaikan nilai yang anda inginkan.

Untuk melihat hasil sementara dari kerjaan, tekan tombol F5 di keyboard.
Ada baiknya untuk tidak mengisi Opacity:=0, karena hal ini akan membuat UserForm benar-benar 'hilang' dan menyebabkan pengguna tidak bisa menutup UserForm
Download file di sini


Sumber Informasi :
http://www.rumahexcel.com/2012/12/tampilan-userform-menjadi-transparan.html#ixzz2oLebD8Cu

0 comments:

Post a Comment

Kategori Iklan