2016-11-14 8 views
0

ワークブックには、それぞれにコラボレータ名(Windowsログインユーザー名)のワークシートがあります。VBAを使用してExcelワークシートを非表示にする

VBAを使用して、すべてのワークシートをループして、実際のWindowsログオンユーザー名と一致するワークシートを照合しました。一致が完了すると、そのワークシートのみが表示されます(他のすべてが隠されています)。

私はこれを部分的に行うことができましたが、一致するワークシートが見つかるまでそれを行うことができます。たとえば、一致するユーザー名が3番目のワークシート(たとえば合計10個)である場合、コードはそこで停止します。私はそれがすべてのワークシートを通過するようにし、一致していないワークシートを隠すだけです。

まず私は、次のモジュールがあります。これを達成することができる方法上の任意のヒント

Option Explicit 
Dim WS As Worksheet 

Private Sub Workbook_Open() 

For Each WS In ActiveWorkbook.Worksheets 
    WorksheetFilter 
Next 
End Sub 

:次に

Sub WorksheetFilter() 

Dim Username As String 
Dim Worksheetname As String 

Worksheetname = ActiveWorkbook.ActiveSheet.Name 

Username = Environ("Username") 

If Worksheetname <> Username Then 
    ActiveSheet.Visible = False 
End If 

End Sub 

を、私はのWorkbook_Open()イベントの前のモジュールを呼び出しますか?

おかげで、 ビトー

+0

コードは特定のワークシートにリンクされていますか? – FDavidov

答えて

4

は、以下のコードを使用し、Workbook_Openイベントの下Workbookモジュールにそれを置きます。

すべてのシートをループして、それぞれをusernameと比較するだけです。

Option Explicit 

Public Sht As Worksheet 


Private Sub Workbook_Open() 

For Each Sht In ThisWorkbook.Sheets 

    If Sht.Name = Environ("Username") Then 
     Sht.Visible = xlSheetVisible 
    Else 
     Sht.Visible = xlSheetHidden 

     ' option 2: use very hidden, only able to unhide through code (unable to unhide using right-click) 
     'Sht.Visible = xlSheetVeryHidden 
    End If 

Next Sht 

End Sub 
+0

別のユーザーから別のシートを隠すのがポイントならば、単にそれらを隠すだけで 'xlSheetVeryHidden'を使うでしょう。 –

+0

@TimWilkinson私はこのオプションを知っています(私はそれをたくさん使っています)が、PO要求に従っています。とにかくこのオプションもあります。 –

+0

ありがとうございました! :) –

1

以下を参照してください。ちょっとしたコードをチョップしてください。ワークシート名を無視する必要はありません。これはモジュールレベルのため、通常のようにワークブック公開イベントで呼び出すことができます

Option Explicit 
Dim ws As Worksheet 
Dim Username As String 
Sub WorksheetFilter() 

Username = Environ("Username") 

For Each ws In ActiveWorkbook.Worksheets 


    If ws.Name <> Username Then 
     ws.Visible = False 

    Else 
     ws.Visible = True 
    End If 
Next ws 
End Sub 

これはどのように機能するのですか教えてください! :)

+0

助けてくれてありがとう: –

+0

喜んで:) – user1

関連する問題