2017-01-19 5 views
0

ここに新しい機能が追加されました。私は従業員が1日あたりの労働時間を入力するための約14のタブ/ワークシートを持つワークブックを持っています。 [概要]タブで、各従業員がクリックして自分のタブを表示するためのマクロボタンを作成します。これらの従業員タブは非表示になっており、従業員がボタンをクリックしたときに非表示にして非表示にします。複数のマクロボタンを作成して特定のワークシートを表示/非表示にする

あいにく、あいまいなエラーメッセージが表示され、従業員1人あたりのモジュールが作成されました。私は何とか "スタック"コードが必要だと思うが、まったく新しいコーディングです。以下は私のコードのサンプルです

+1

あなたのコードは私のために働きます。正確なエラーは何ですか? –

答えて

0

プライベートに変更した場合は、動作するはずです。私はあなたがこの時点で基本機能を動作させるためにマクロを作成していると仮定しています。あなたは(あなたが投稿したコードのような)非表示にし、このように再表示することができます

' This first macro actually just makes the worksheet visible and then 
' invisible each time you execute it - so I'm not sure if 
' that's what you're after 
Public Sub ShowHideWorksheets() 
    Sheets("EMPLOYEE 1").Visible = Not Sheets("EMPLOYEE 1").Visible 
End Sub 

' If it's invisible you can do this. 
Public Sub ShowWorksheets() 
    Sheets("EMPLOYEE 1").Visible = True 
End Sub 

' Basically that should give you an idea of how to proceed. 
+1

コードの残りの部分が同じモジュール内にある場合、プライベートは機能します。 –

+0

trueですが、追加のコンテキストは提供されませんでした。 – Amorpheuses

+0

同じモジュール内のコード内の「従業員」名を「変更する」場合は、別々のボタンを作成して各タブを個別に表示/非表示を切り替える方法はありますか? – athoch71

0

基本的にはワークシートの表示を切り替えることを望みます。

Public Sub TriggerSheetVisibility(worksheetname as string) 

Dim ws as WorkSheet 

On Error Resume Next 'To avoid subscript out of range error if a worksheetname is passed that doesn't exit 
    Set ws = Worksheets(worksheetname) 
On Error Goto 0 

If Not ws Is Nothing Then 'Only when the worksheet exists, we can execute the rest of this sub: 
    If ws.Visible = True then 
     ws.Visible = False 
    Else 
     ws.Visible = True 
    End If 
End If 

End Sub 

もこれも許容できるアプローチであるhttps://msdn.microsoft.com/en-us/library/office/ff197786.aspx

0

参照: あなたがトリガされる予定されているシートを知っていると仮定すると、このようなものでしょうか?私が原因あなただけが正しくボタンの後ろにそれを配置する必要があり

Private Sub CommandButton1_Click() 
    Dim sheet As Worksheet 
    For Each sheet In ActiveWorkbook.Sheets 
     If sheet.Name <> Environ("USERNAME") Then 
      sheet.Visible = False 
     End If 

     If sheet.Name = Environ("USERNAME") Then 
      sheet.Visible = True 
     End If 
    Next sheet 
End Sub 
0

1つのボタンを必要とするという事実に、この方が好きしかしProlly長い

Private Sub CommandButton1_Click() 
    Dim sheet As Worksheet 
    For Each sheet In ActiveWorkbook.Sheets 
     If sheet.Name <> CommandButton1.Caption Then 
      sheet.Visible = False 
     End If 

     If sheet.Name = CommandButton1.Caption Then 
      sheet.Visible = True 
     End If 
    Next sheet 
End Sub 

かかわらったらしいです。ページにボタンを挿入したら、右クリックしてマクロを割り当てます。コードは次のようになります

Sub Button1_Click() 
    Sheets("EMPLOYEE 1").Visible = Not Sheets("EMPLOYEE 1").Visible 
End Sub 
+0

私がやろうとしているのは、メインタブに従業員1人のボタンを「追加」することで、他の人からタブを隠すことができます。私は上記のコードを試したが、何も働いていない。 – athoch71

+0

開発者タブ - >挿入 - >フォームコントロール - >ボタン - >ボタンを描画します。 Assignマクロ画面が表示されます(Nは数字です)。 Newボタンをクリックしてコードを貼り付けます(Nは実際にNを使用しません)NボタンをNに置き換えます。 Sub ButtonN_Click() シート( "従業員1")Visible = Notシート( "EMPLOYEE 1")。Visible End Sub – bvmcode

+0

"Employee 1"シートを作成しましたが、それは完全に機能します。 – bvmcode