2017-03-02 14 views
1

私はユーザーフォームを持っており、ブックを開くときにユーザーに表示される最初のものであり、このフォームの背後にあるシートは非表示にします。ユーザーフォームを完全に隠すワークシートを完全に隠す

私は以下を理解し、これを行うためのコードです:

Private Sub Workbook_Open() 
Application.Visible = False 
UserForm1.Show vbModeless 
End Sub 

これは、正常動作を行いますが、それは隠され、ユーザーフォームが表示される前に、私のワークシートは1秒か2秒のためにアップ点滅します。 これは、誰かがスクリーンショットを撮るか、ユーザーフォームの背後にある貴重な情報を見るのに十分な長さです。

また、非常にきれいに見えません!

これを達成するためにVBA内の何かを変更する方法はありますか?

バッチスクリプトなどでも可能であることがわかりましたが、これは経験がなく、既に複雑なフォームに別のディメンションを追加したくないということです。

+1

あなたは、特定の白紙を活性化させることができ、それはより速いかもしれません。しかし、BeforeCloseイベントとBeforeSaveイベントでその空白シートを有効にして、そのシートを開くようにするのがより良い方法です。 ;) – R3uK

答えて

0

私は、すべての重要なシートを隠すWorkbook_BeforeCloseイベントを選択します。こうすることで、マクロを有効にせずにファイルを開いている人にもデータが表示されなくなります。

これは、新しい標準モジュール

Option Explicit 
Option Private Module 

Public Sub SheetsHidden(ByRef hidden As Boolean) 
    Dim ws As Worksheet 
    For Each ws In ThisWorkbook.Worksheets 
     If ws.name <> "Home" And hidden Then 'your *safe* sheet name 
      ws.Visible = xlSheetVeryHidden 
     Else 
      ws.Visible = xlSheetVisible 
     End If 
    Next ws 
End Sub 

に行くと、あなたがなどのパラメータでシートを再表示することができ、ユーザを認証したら、あなたはあなたのThisWorkbookモジュール

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    SheetsHidden True 
End Sub 

からそれを呼び出すことができますFalse


私はまた、特に、ユーザーフォームを模索推薦:

With New UserForm1 
    .Show vbModeless 
    'do more with your form 
End With 
0

設計することにより、Excelが外部スクリプトまたはツールなしでは不可能であるまで表示せずにExcelファイルを開きます。

すべてのシートを非表示にする簡単な方法は、.xla(m)(またはThisWorkbook.IsAddin = Trueを使用して)として、ファイルを保存することです

Private Sub Workbook_Open() 
    ThisWorkbook.IsAddin = True ' True by default for .xla(m) Excel Add-In files 
    Application.Visible = Workbooks.Count 
    UserForm1.Show vbModeless 
End Sub 

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    If Not ThisWorkbook.IsAddin Then ThisWorkbook.IsAddin = True 
    If Not ThisWorkbook.Saved Then ThisWorkbook.Save 
    If Workbooks.Count Then Application.Visible = True Else Application.Quit 
End Sub 

とフォームクローズイベントで:

Private Sub UserForm_Terminate() 
    If Workbooks.Count Then ThisWorkbook.Close True Else Application.Quit 
End Sub 
関連する問題