当該ファイルを開く際にリボン等を非表示、閉じる際には表示に戻すところでつまづいています。
Win7 Excel2007(今後2013でも使う予定です)
【標準モジュール】
Public booCloseFlag As Boolean
'API宣言
'ウィンドウハンドルを取得する関数
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
【ThisWorkbook】
Private Sub Workbook_Open()
Call すべて非表示
booCloseFlag = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If booCloseFlag = True Then 終了確認1.Show
Cancel = booCloseFlag
End Sub
【UserForm:終了確認1】
Private Sub UserForm_Initialize()
Dim hWnd As Long
Dim lngWstyle As Long
hWnd = FindWindow(vbNullString, Me.Caption)
lngWstyle = GetWindowLong(hWnd, GWL_STYLE)
SetWindowLong hWnd, GWL_STYLE, lngWstyle And (Not WS_SYSMENU)
DrawMenuBar hWnd
End Sub
Private Sub CB1_保存する_Click()
Call すべて表示
booCloseFlag = False
ThisWorkbook.Close True
End Sub
Private Sub CB2_保存しない_Click()
Unload Me: 終了確認2.Show
End Sub
【UserForm:終了確認2】
Private Sub UserForm_Initialize()
Dim hWnd As Long
Dim lngWstyle As Long
hWnd = FindWindow(vbNullString, Me.Caption)
lngWstyle = GetWindowLong(hWnd, GWL_STYLE)
SetWindowLong hWnd, GWL_STYLE, lngWstyle And (Not WS_SYSMENU)
DrawMenuBar hWnd
End Sub
Private Sub CB1_絶対にしない_Click()
Call すべて表示
booCloseFlag = False
ThisWorkbook.Close False
End Sub
Private Sub CB2_やっぱりする_Click()
Call すべて表示
booCloseFlag = False
ThisWorkbook.Close True
End Sub
【標準モジュール】
Sub すべて表示()
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"
Application.DisplayFormulaBar = True
ActiveWindow.DisplayHorizontalScrollBar = True
ActiveWindow.DisplayVerticalScrollBar = True
On Error Resume Next
For Each s In ThisWorkbook.Sheets
s.Select
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayHeadings = True
Next
On Error GoTo 0
End Sub
Sub すべて非表示()
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)"
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHorizontalScrollBar = False
ActiveWindow.DisplayVerticalScrollBar = False
On Error Resume Next
For Each s In ThisWorkbook.Sheets
s.Select
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHeadings = False
Next
On Error Resume Next
End Sub
■ 起きている困った事象
違うファイルを開いた状態で、
ワークブックの×ボタンをクリック ⇒ 終了確認1、CB2_保存しない ⇒ 終了確認2、CB1_絶対にしない
の順番で閉じようとすると、
「Microsoft office Excel は、動作を停止しました」のウィンドウが出てきてしまいます。
■ 試してみたこと
・一緒に開くファイルは、いろいろなファイルを複数試してみましたが、すべて同じ事象が発生します。
・上記の操作以外は問題ありません。
・ユーザーフォームの終了確認1からステップ実行した場合には、上記事象は起こりません。
・当該ファイルを単独で使用すれば問題は起きません。
・PCの再起動をしても、治りませんでした。
なにがいけないのか、さっぱりわからず困っています。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/04 10:47
2015/06/04 11:04
2015/06/04 11:20
2015/06/04 11:31
2015/06/04 12:24
2015/06/05 01:57
2015/06/05 02:27
2015/06/05 02:59