Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


37309 / 76738 ←次へ | 前へ→

【44601】Re:ユーザーフォームの背景について
回答  りん E-MAIL  - 06/11/23(木) 13:34 -

引用なし
パスワード
   hitosi さん、こんにちわ。

>ユーザーフォーム全体を半透明にすることってできますか?

フォームにスクロールバー(ScrollBar1)を配置し、以下を全てユーザーフォームのコードに記述。

Option Explicit
'API宣言
Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal wnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlag As Long) 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 GetActiveWindow Lib "user32" () As Long
'
Const WS_EX_LAYERED = &H80000
Const LWA_ALPHA = 2
Const GWL_EXSTYLE = -20 'GWL_EXSTYLE
'
Private hLibUser32 As Long
Dim hwnd As Long, tr As Byte
'
Public Function xGetActiveWindow() As Long
  xGetActiveWindow = GetActiveWindow
End Function
'
Private Sub ScrollBar1_Change()
  tr = CByte(ScrollBar1.Value)
  Call SetLayeredWindowAttributes(hwnd, 0, tr, LWA_ALPHA)
  UserForm1.Caption = "透明度: " & Format(1 - (ScrollBar1.Value / 255), "0%")
End Sub

Private Sub UserForm_Activate()
  Dim p As Long
  hwnd = xGetActiveWindow
  Call SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
  'スクロールバーの設定
  With ScrollBar1
   .Max = 255
   .Min = 20  '消えすぎると見失うのでこの程度まで
   .Value = 127 '50%
  End With
End Sub
0 hits

【44598】ユーザーフォームの背景について hitosi 06/11/22(水) 21:56 質問
【44599】Re:ユーザーフォームの背景について ぱっせんじゃー 06/11/22(水) 22:42 発言
【44600】Re:ユーザーフォームの背景について hitosi 06/11/23(木) 7:43 質問
【44601】Re:ユーザーフォームの背景について りん 06/11/23(木) 13:34 回答
【44633】Re:ユーザーフォームの背景について hitosi 06/11/26(日) 17:50 お礼

37309 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free