タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらのお願いをご覧になってください。
1 C1: C150を選択した場合のみ、ユーザーフォームを表示し、それ以外の時に閉じるには
2 A列のセルを選択すると,UserForm1をShow、
B列のセルを選択すると,UserForm2をShowするには
3 A5"〜"A10"の1つのセルを選択するとUserForm1をShow、
"B5"〜"B10だとUserForm2をShowするには
4
ユ−ザ−フォ−ムを動かないようにしたい
5
ユーザーフォームを開いた時にexcelを隠すには?
6
EXCELまたはブックを起動時にユーザーフォームを立ち上げたい
7 UserFormの"閉じる"ボタンを操作不可にするには
8 userformを最大化するには
9 userformを他のファイルにコピーするには
10 ユーザーフォームを閉じるには
11 ユーザフォームの閉じるボタンをグレーに無効化表示する方法
12 ユーザーフォームの右上のX印を消すには
13 ユーザーフォームを、モードレス(シート操作可能状態Excel2000)で表示するには
14 ユーザーフォームを出して、数秒後に消すには
15 ユーザーフォームを自由にサイズ変更し、最小化、最大化ボタンを作りたい。
16 ユーザーフォームのタイトルバーを消すには
17 ユーザーフォームを、Excelを最小化した状態で「左上」「左下」「右上」「右下」に移動するには
18 ユーザーフォームから印刷プレビューするには?
19 ユーザーフォームの、SHow・Load と Hide・Unload の違いとは?
20 ユーザーフォームを印刷するには?
1 | C1: C150を選択した場合のみ、ユーザーフォームを表示し、 それ以外の時に閉じるには |
Private Sub
Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub On Error Resume Next If Not Intersect(Target, Range("C1:C150")) Is Nothing Then UserForm1.Show vbModeless Else UserForm1.Hide End If End Sub このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。 |
|
2 | A列のセルを選択すると,UserForm1をShow. B列のセルを選択すると,UserForm2をShowするには |
Private Sub
Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Select Case Target.Column Case 1 UserForm1.Show Case 2 UserForm2.Show End Select End Sub このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。 |
|
3 | A5"〜"A10"の1つのセルを選択するとUserForm1をShow、 "B5"〜"B10だとUserForm2をShowするには http://www.keep-on.com/~excelyou/2000lng4/200007/00070107.txt 「ユーザーフォームをワークシートに特定の列のセルが選択された場合のみ 表示するには?」 【VBAラウンジ】 |
Private Sub
Worksheet_SelectionChange(ByVal Target As Range) With Target If .Cells.Count > 1 Then Exit Sub Select Case .Column Case 1 If .Row >= 5 And .Row <= 10 Then UserForm1.Show Case 2 If .Row >= 5 And .Row <= 10 Then UserForm2.Show End Select End With End Sub このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。 |
|
4 | ユ−ザ−フォ−ムを動かないようにしたい http://www.keep-on.com/~excelyou/2000lng4/200004/00040245.txt 「ユーザーフォームを固定するには」 【VBAラウンジ】 |
Excel97 Private Const MF_BYCOMMAND = &H0& Private Const SC_MOVE = &HF010& Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function DeleteMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Sub UserForm_Initialize() Dim hwnd As Long Dim hMenu As Long Dim rc As Long Dim strClassName As String strClassName = "ThunderXFrame" hwnd = FindWindow(strClassName, Me.Caption) hMenu = GetSystemMenu(hwnd, 0&) rc = DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND) End Sub Excel2000では、下から5行目の "ThunderXFrame" を "ThunderDFrame" に 変更します。 このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
動かされても、元に戻します。表示位置のLeft
= 100、Top = 100は、好みに変更します。 Private Sub UserForm_Initialize() UserForm1.Left = 100 UserForm1.Top = 100 End Sub Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As _ Integer, ByVal X As Single, ByVal Y As Single) UserForm1.Left = 100 UserForm1.Top = 100 End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
5 | ユーザーフォームを開いた時にexcelを隠すには? |
ブックを開いたときにエクセルを非表示にして、フォームだけを表示します。 Private Sub Workbook_Open() Application.Visible = False UserForm1.Show End Sub このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。 ユーザーフォームにボタンを配置し、非表示のエクセルを表示して、フォームを閉じます。 Private Sub CommandButton1_Click() Application.Visible = True Unload Me End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
6 | EXCELまたはブックを起動時にユーザーフォームを立ち上げたい |
Private Sub Workbook_Open() Userform1.Show End Sub このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。 |
|
7 | UserFormの"閉じる"ボタンを操作不可にするには |
Private Sub UserForm_QueryClose(Cancel As
Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then Cancel = True End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
8 | userformを最大化するには |
Private Sub UserForm_Initialize() Me.Left = Application.Left Me.Top = Application.Top Me.Width = Application.Width Me.Height = Application.Height End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
9 | userformを他のファイルにコピーするには |
Sub ユーザーフォームのコピー() Dim sf$, df$, md$ Dim src, des, tmp$ sf = ThisWorkbook.Name 'コピ−元のbook名 df = "book2" 'コピ−先のbook名 md = "UserForm1" 'コピ−するComponent名 tmp = Environ("temp") & "\~#!tmp." 'tmpファイル名 Set src = Workbooks(sf).VBProject.VBComponents(md) Set des = Workbooks(df).VBProject.VBComponents On Error Resume Next des.Remove des(md) '上書き対応 On Error GoTo 0 src.Export (tmp) des.Import (tmp) Kill (tmp & "*") '注) tmpファイルを削除 End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
10 | ユーザーフォームを閉じるには |
Unload UserForm1 メモリから削除します。 | |
UserForm1.Hide 非表示にしますが、アンロードしません。 ユーザーフォームをHideした場合はインスタンス(実体)は残ったままですので、 Hideした後でも、ユーザーフォーム上のコントロール等にアクセスできます。 |
|
11 | ユーザフォームの閉じるボタンをグレーに無効化表示する方法 http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200203/02030408.txt 「フォーム右上のラを無効にできますか?」【VBAラウンジ】 http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200105/01050113.txt 「ユーザーフォームの右上にある閉じる(×)ボタンの表示を消すには?」【VBAラウンジ】 |
’標準モジュール Public Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Public Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Public Declare Function DeleteMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, _ ByVal wFlags As Long) As Long Public Declare Function DrawMenuBar Lib "user32" _ (ByVal hwnd As Long) As Long Public Const SC_CLOSE = &HF060& Public Const MF_BYCOMMAND = &H0& このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 ’フォームモジュール Private Sub UserForm_Initialize() Dim hwnd As Long Dim hMenu As Long Dim rc As Long hwnd = FindWindow("ThunderDFrame", Me.Caption) hMenu = GetSystemMenu(hwnd, 0&) rc = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND) rc = DrawMenuBar(hwnd) End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
'×ボタンはそのままで、操作不可にします 'フォームのモジュール Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = 1 End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
12 | ユーザーフォームの右上のX印を消すには http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200203/02030408.txt 「フォーム右上のラを無効にできますか?」【VBAラウンジ】 http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200105/01050113.txt 「ユーザーフォームの右上にある閉じる(×)ボタンの表示を消すには?」【VBAラウンジ】 |
'標準モジュール '標準的な名称が決まっているAPIで使用する値を、定数として宣言 'ウインドウスタイルの処理 Private Const GWL_STYLE = (-16) ' Private Const WS_SYSMENU = &H80000 '使用するAPIを宣言 'アクティブウインドウのハンドルを取得する Private Declare Function GetActiveWindow Lib "user32" () As Long 'メニューバーを描画する Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd 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 Public Sub HideSysmenu(Optional ByVal Dummy As Boolean) Dim Ret As Long, hWnd As Long, Wnd_STYLE As Long 'アクティブウインドウのハンドルを取得する hWnd = GetActiveWindow() 'ウインドウに関するデータを取得 Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE) ' Wnd_STYLE = Wnd_STYLE And (Not WS_SYSMENU) '指定されたウィンドウの属性を変更 Ret = SetWindowLong(hWnd, GWL_STYLE, Wnd_STYLE) 'メニューバーを描画 Ret = DrawMenuBar(hWnd) End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 'フォームのモジュール |
|
'標準モジュール Public Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Public Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function DrawMenuBar Lib "user32" _ (ByVal hwnd As Long) As Long Public Const GWL_STYLE = -16& Public Const WS_SYSMENU = &H80000 このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 'フォームのモジュール Private Sub UserForm_Initialize() Dim hwnd As Long Dim lngs As Long Dim rc As Long hwnd = FindWindow("ThunderDFrame", Me.Caption) lngs = GetWindowLong(hwnd, GWL_STYLE) rc = SetWindowLong(hwnd, GWL_STYLE, lngs Xor WS_SYSMENU) rc = DrawMenuBar(hwnd) End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
13 | ユーザーフォームを、モードレス(シート操作可能状態Excel2000)で表示するには http://www.keep-on.com/~excelyou/2000lng4/200006/00060297.txt 「ユーザーフォームを表示させたままワークシートをアクティブにするには?」【VBAラウンジ】 http://www.ae.wakwak.com/cgi-bin/sbox/~efc21/wwwlng.cgi?print+200204/02040162.txt 「ユーザーフォームを表示したままシートを編集するには?」【VBAラウンジ】 |
Excel2000、Excel2002
共通 Sub フォーム表示() UserForm1.Show vbModeless End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
|
Excel97 エクセル97の場合、バグ技を利用するとできるようです。 http://www.fuji.ne.jp/~excelyou/fc00002.txt ユーザーフォームにコマンドボタンを配置します。 ユーザーフォームを開いてコマンドボタンを押すと、「ファイルを開く」ダイアログが出ますが、これを閉じた後、97でもモードレス状態になります。 Private Sub CommandButton1_Click() Application.GetOpenFilename End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
14 | ユーザーフォームを出して、数秒後に消すには |
ユーザーフォームの
Activate イベントプロシージャとして、 Private Sub UserForm_Activate() Application.Wait Now() + TimeValue("00:00:05") Unload Me End Sub というコードを書いておくと、5秒後に勝手に閉じられます。 このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
15 | ユーザーフォームを自由にサイズ変更し、最小化、最大化ボタンを作りたい。 |
Excel97、Excel2000 共通 Private Const GWL_STYLE = (-16) Private Const WS_THICKFRAME = &H40000 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 Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Public Sub CustomizeForm() Dim Ret As Long Dim hwnd As Long Dim Wnd_STYLE As Long hwnd = GetActiveWindow() Wnd_STYLE = GetWindowLong(hwnd, GWL_STYLE) Wnd_STYLE = Wnd_STYLE Or WS_THICKFRAME Or &H30000 Ret = SetWindowLong(hwnd, GWL_STYLE, Wnd_STYLE) Ret = DrawMenuBar(hwnd) End Sub Sub test() UserForm1.Show End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 Private Sub UserForm_Activate() CustomizeForm End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
16 | ユーザーフォームのタイトルバーを消すには |
Excel97、Excel2000 共通 Private Const GWL_STYLE = (-16) Private Const WS_CAPTION = &HC00000 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 Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Public Sub HideCaption() Dim Ret As Long Dim hWnd As Long Dim Wnd_STYLE As Long hWnd = GetActiveWindow() Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE) Wnd_STYLE = Wnd_STYLE And (Not WS_CAPTION) Ret = SetWindowLong(hWnd, GWL_STYLE, Wnd_STYLE) Ret = DrawMenuBar(hWnd) End Sub Sub test() UserForm1.Show End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 Private Sub UserForm_Activate() HideCaption End Sub Private Sub CommandButton1_Click() Unload Me End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
17 | ユーザーフォームを、Excelを最小化した状態で 「左上」「左下」「右上」「右下」に移動するには |
Public
a, b, c, d, e, f Private Sub CommandButton1_Click() Me.Left = e Me.Top = f End Sub Private Sub CommandButton2_Click() Me.Left = c - d Me.Top = f End Sub Private Sub CommandButton3_Click() Me.Left = e Me.Top = a - b End Sub Private Sub CommandButton4_Click() Me.Left = c - d Me.Top = a - b End Sub Private Sub UserForm_Initialize() e = Application.Left f = Application.Top a = Application.Height c = Application.Width b = UserForm1.Height d = UserForm1.Width Application.WindowState = xlMinimized AppActivate Application.Caption End Sub Private Sub UserForm_Terminate() Application.WindowState = xlMaximized End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
18 | ユーザーフォームから印刷プレビューするには? http://www.ae.wakwak.com/cgi-bin/sbox/~efc21/wwwlng.cgi?print+200205/02050074.txt 「ユーザーフォームから印刷プレビューする方法」 【VBAラウンジ】 |
Private
Sub CommandButton1_Click() UserForm1.Hide Worksheets("出力用紙").PrintPreview UserForm1.Show End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |
|
19 | ユーザーフォームの、SHow・Load と Hide・Unload の違いとは? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200104/01040167.txt 「Loadの使い方は?」 【VBAラウンジ】 |
'Userform1を読み込みます(表示はされません)
Load UserForm1 'Userform1を表示します(表示されます) UserForm1.Show 'Userform1を非表示にします(表示はされていない) UserForm1.Hide 'Userform1を閉じます(表示はされていない) Unload UserForm1 ※UserForm_InitializeイベントはUserFormをLoadしたときに発生します。 ※Loadを実行するとユーザーフォームは表示されませんが、 メモリ上にユーザーフォームのインスタンス(実体)が生成されますので、 Loadした後は、ユーザーフォーム上のコントロール等にアクセスできます。 ユーザーフォームをHideした場合はインスタンスは残ったままですので、 Hideした後でも、ユーザーフォーム上のコントロール等にアクセスできます。 |
|
20 | ユーザーフォームを印刷するには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200107/01070029.txt 「フォームを印刷するには?」 【編集ラウンジ】 |
VBEditorで印刷するフォームを選択しておき、
「ファイル」「印刷」で「フォーム」チェックボックスをつけて印刷します |
|
Private
Sub UserForm_Click() UserForm1.PrintForm End Sub このコードの使い方は、マクロの使い方(4)ユーザーフォームのモジュールにあります。 |