[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームの背景だけを透明にしたい』(Chanki)
EXCEL VBAのユーザーフォームの背景のみを透明にすることはできるでしょうか?
ユーザーフォーム全体を透明にする方法は見つけたのですが、ユーザーフォームの中にあるラベルやボタンは透明にしたくありません。
目標はラベルやボタンだけが浮いている状態にすることです。
ご存知の方、よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
> ラベルやボタンだけが浮いている状態にすることです。
Frameコントロールの中に上記ラベルやボタンを置く事です。 つまり、別Window扱い (Abyss2) 2018/01/18(木) 01:04
予め、フォームの背景色を、システム色ではなく、パレット色から選択したものにしておいてください。
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 crKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As Long Const GWL_EXSTYLE = (-20) Const WS_EX_LAYERED = &H80000 Const LWA_COLORKEY = 1&
Private Sub UserForm_Initialize() Dim hWnd As Long hWnd = FindWindow("ThunderDFrame", Me.Caption) Call SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED) Call SetLayeredWindowAttributes(hWnd, Me.BackColor, 0, LWA_COLORKEY) End Sub (???) 2018/01/18(木) 09:40
ちなみに、「全体を透明」はこの辺のサイトを参考にしました。
https://www.excel-pitin.net/single-post/2017/08/06/邪魔なユーザーフォームを透明に%EF%BC%81%EF%BC%8812-準備編%EF%BC%89
(Chanki) 2018/01/22(月) 21:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.