BEAGLE-HC 医薬品、医療機器の研究・開発 ポータルサイト
 現在位置 : HOME > ITの活用 プログラミング > Excel コードライブラリアン(開始・終了処理)
くすりのこと
 治療薬の最前線
データブック
 ヘルスケア市場
 データブック
 (売上ランキング)
ニュース
 企業ニュース
 (パイプラインニュース)
 (財務・決算ニュース)
 (M&Aニュース)
 メディアニュース
ITの活用
 バリデーション
 セキュリティ
 WORD文書の作成
 プログラミング
 (Word/VBA)
 (Excel/VBA)
 (Access/VBA)
 (SAS)
 (SQL)
イベント
 イベントカレンダ
製薬会社研究
 製薬会社
 製薬会社研究
 決算短信一覧
 
 
 
記述の規則 開始・終了処理 プログラム制御 ファイル操作
ワークブック・シート操作 セル・行・列の操作 セルの書式設定 関数
ウィンドウ操作 グラフ操作 データベースの操作 印刷
サンプルプログラム      
 
Page Index
●AutoOpen、AutoClose
●Excelのウィンドウを消してしまう
●ユーザーフォームを表示する
●ユーザーフォームに最大化最小化ボタンを付ける
●実行中の画面更新をしない
●実行中に警告メッセージを表示させない
●処理中のプログラム名(ブック)を取得する
●カーソルを時計マークにする
●プログラム中断(スリープ)する
●ブックを保存する
●プログラムを終了する
●メニュバーを追加する
●プログラム開始ルーチンの雛型
●プログラム終了ルーチンの雛型
 
本章では、プログラムの開始時や終了時に必要なコードサンプルを説明します。
 
AutoOpen、AutoClose ↑ このページの最初へ
Sub プロシージャで、標準モジュールです。過去の Excel で使われていたもので、互換性維持のために残されています。 いずれもファイルが開いたとき/閉じる前に実行されるプロシージャです。
 
Excelのウィンドウを消してしまう ↑ このページの最初へ
Application.Visible = False    'ウインドウを消す

Application.Visible = True    'ウインドウを復活
 
ユーザーフォームを表示する ↑ このページの最初へ
UserForm1.show    '表示

Label1.Caption = "終了しました。"    'ユーザーフォームのキャプションに文言を設定

UnLoad UserForm1    '非表示
 
ユーザーフォームに最大化・最小化ボタンを付けする ↑ このページの最初へ
Option Explicit
Option Private Module

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 DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function WindowFromObject Lib "oleacc" Alias "WindowFromAccessibleObject" _
(ByVal pacc As Object, phwnd As Long) As Long
Const WS_MAXIMIZEBOX = &H10000
Const WS_MINIMIZEBOX = &H20000
Const WS_THICKFRAME = &H40000 'サイズ変更
Const GWL_STYLE = (-16)

'ユーザーフォームに最大化・最小化ボタンを付け、又サイズ変更可能にする
Sub UformMaxMin(uf As UserForm)

  Dim hwnd&

  'hwnd = FindWindow(IIf(Application.Version < 9, "ThunderXFrame", "ThunderDFrame"), uf.Caption)
  WindowFromObject uf, hwnd 'Windows2000以降
  SetWindowLong hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) Or WS_MAXIMIZEBOX Or
   WS_MINIMIZEBOX Or WS_THICKFRAME
  DrawMenuBar hwnd

End Sub
 
実行中の画面更新をしない(画面がちらつかなくなります) ↑ このページの最初へ
Application.ScreenUpdating = False    'ON

Application.ScreenUpdating = True     'OFF
 
実行中に警告メッセージを表示しないようにする ↑ このページの最初へ
Application.DisplayAlerts = False
 
処理中のプログラム名を取得する ↑ このページの最初へ
Dim Bookname As String
Bookname = ActiveWorkbook.Name
 
カーソルを時計マークにする ↑ このページの最初へ
Application.Cursor = xlWait

戻す
Application.Cursor = xlNormal
 
プログラムを中断(スリープ)する ↑ このページの最初へ
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)

' EscキーでErrorHandlerへ進む
Application.EnableCancelKey = xlErrorHandler
On Error GoTo ESC_CHATCH

'Do
  ・・・・
  '実行中のマクロを1秒間停止します。
  DoEvents
  Sleep 1000     ' msec
'Loop

ESC_CHATCH:
If MsgBox("ESCキーが押されました。終了しますか?", vbInformation + vbYesNo) = vbYes Then
  GoTo LOOP_EXIT
Else
  Resume
End If

LOOP_EXIT:
  
' Escキー処理を戻す
  Application.EnableCancelKey = xlInterrupt
  Application.StatusBar = False
  On Error GoTo 0   
'エラー処理ルーチンを無効にします
 
ブックを保存する ↑ このページの最初へ
ActiveWorkbook.Save
ThisWorkbook.Saved = True
 ' 「保存しますか」の確認メッセージを避ける
 
プログラムを終了する ↑ このページの最初へ
Application.Quit

この瞬間にExcelは終了しない。終了を「予約」しておいて、その後の一連のプロシージャが終わった所で終了する。
この場合 Auto_Close は実行されない
 
メニュバーを追加する ↑ このページの最初へ
Set myCB_1 = Application.CommandBars("worksheet menu bar")
Set myCBCtl_1 = myCB_1.Controls.Add(Type:=msoControlPopup, Temporary:=True)

myCBCtl_1.Caption = "振替伝票"
With myCBCtl_1

.Controls.Add Type:=msoControlButton
With .Controls(1)
.Caption = "白紙伝票の追加"
.OnAction = "Den_Sakusei"
End With

.Controls.Add Type:=msoControlButton
With .Controls(2)
.Caption = "白紙伝票の挿入"
.OnAction = "Den_Sonyu"
End With

.Controls.Add Type:=msoControlButton
With .Controls(3)
.Caption = "トップ頁へジャンプ"
.OnAction = "Page_Jump_Top"
End With

.Controls.Add Type:=msoControlButton
With .Controls(4)
.Caption = "指定頁へジャンプ"
.OnAction = "Page_Jump"
End With

.Controls.Add Type:=msoControlButton
With .Controls(5)
.Caption = "最終頁へジャンプ"
.OnAction = "Page_Jump_Last"
End With

End With
 
プログラム開始ルーチンの雛型 ↑ このページの最初へ
Sub auto_open()
  'ツールボックスの非表示
  Toolbars(1).Visible = False
  Toolbars(2).Visible = False
  '警告メッセージOff
  Application.DisplayAlerts = False
  '画面更新なし
  Application.ScreenUpdating = False
  '本プログラム名のGET
  ThisBookName = ActiveWorkbook.Name
  'Focus
  Worksheets(Sheet1).Activate
  Range("A1").Select
End Sub
 
プログラム終了ルーチンの雛型 ↑ このページの最初へ
Sub auto_close()
  'ツールボックスの表示
  Toolbars(1).Visible = True
  Toolbars(2).Visible = True

  '警告メッセージOn に戻す
  Application.DisplayAlerts = True

  '画面更新あり に戻す
  Application.ScreenUpdating = False
End Sub

↑ このページの最初へ

   ご意見・ご感想をお寄せください。 ‖ お問い合わせはこちらから ‖ このサイトについて           サイトマップ  ‖
  Copyright 2006 - 2013 uTRAM Corp. All Rights Reserved
 
PHARCIS(ヘルスケア最新情報提供)
Facebook for PHARCIS
ClinMark8
アクセスランキング
(2013年5月)

1位 企業ニュース
2位 売上ランキング
3位 メディアニュース
4位 製薬会社
5位 治療薬の最前線
6位 決算短信一覧
7位 データブック
8位 製薬会社研究
9位 イベントカレンダ
10位 パイプラインニュース