Verborgen tabbladen openen met VBA

Status
Niet open voor verdere reacties.

JSlootweg

Gebruiker
Lid geworden
23 feb 2017
Berichten
12
Ik heb een excel bestand met meerdere tabbladen. Nu heb ik deze tabbladen verborgen (hidden), maar als ik dan vervolgens op het eerste tabblad op een knop druk om een verborgen sheet te openen krijg ik een foutmelding
Code voor het verbergen
Sub HideSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> ActiveSheet.Name Then ws.Visible = xlSheetVeryHidden
Next ws
End Sub

(Bovenstaande code gehaald van een YouTube forum)
VBA voor open van de sheet
Sub OpenSchema_01()
'
' OpenSchema_01 Macro

Sheets("Schema 01").Select
Range("C3:E3").Select
End Sub

Is er een algemene code om dan de verborgen sheets te openen.

Vervolg vraag is dan om de sheet weer te verbergen bij het sluiten van de sheet. Bv als ik terug wil naar het startscherm.
VBA voor het openen van het startscherm
Sub OpenStartscherm()
'
' openStartscherm Macro
' Opent werkblad Start
'
Sheets("Start").Select
End Sub

Ik ben beginner wat betreft VBA. Wie kan mij helpen?
 
Code:
Sub SjonR()
For Each sh In Sheets
    If sh.Name <> ActiveSheet.Name Then sh.Visible = True
Next
End Sub

En voor het verbergen maak je van de TRUE een FALSE
 
Tabbladen

Dank voor je snelle reactie. Maar waar plaats ik deze code.
Als ik deze code plaats bij openen van de sheet
Sub OpenSchema_01()
'
' OpenSchema_01 Macro

For Each Sh In Sheets
If Sh.Name <> ActiveSheet.Name Then Sh.Visible = True
Next
Sheets("Schema 01").Select
Range("C3:E3").Select
End Sub

dan wordt het blad wel geopend. En alle andere bladen. En dat wil ik juist niet.
Maar nu wil ik dat bij het terugkeren naar het startscherm dat dit blad weer verborgen wordt.
Nu krijg ik de volgende foutcode melding 1004

Sub OpenStartscherm()
'
' openStartscherm Macro
' Opent werkblad Start
'Sub SjonR()
For Each Sh In Sheets
If Sh.Name <> ActiveSheet.Name Then Sh.Visible = False
Next
Sheets("Start").Select
End Sub
 
Waarom gebruik je geen code tags ?
 
Code tags

Wat bedoel je met code tags? Dat is helemaal nieuw voor mij. Kun jij mij daar dan mee op weg helpen?
 
Zie de eerst regel in de handtekening van @SjonR of de derde regel in de handtekening van @snb;)
 
Alles hierboven gelezen. Het gaat om het volgende. Ik wil in mijn excel bestand de tabbladen verbergen. Dat lukt. Maar als ik op mijn startblad dan een opdrachtknop aanklik die dan een verborgen blad moet openen gebeurt er niets.
Voorbeeldbestand bijgevoegd als bijlage

Daarna wil ik dat als ik het geopende tabblad sluit met de knop startscherm in dat tabblad, het geopende tabblad wordt verborgen en ik terugkeer naar het startscherm.
 

Bijlagen

  • Trainingsschema.xlsm
    1,9 MB · Weergaven: 26
Even de objecten een logische naam geven en dan gebruik maken van Application.caller. Niet geheel uitgewerkt maar geeft een idee hoe eenvoudig het kan.

In de module van ThisWorkbook:
Code:
Private Sub Workbook_Open()
  For Each Sh In Sheets
    If Sh.Name <> "Start" Then Sh.Visible = False
  Next Sh
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  If Sh.Name <> "Start" Then Sh.Visible = False
End Sub

In een gewone module
Code:
Sub VenA()
 With Sheets(Application.Caller)
  .Visible = True
  Application.Goto .Cells(1)
 End With
End Sub

De sub VenA koppel je dan aan de 'knoppen'
 

Bijlagen

  • Trainingsschema.xlsm
    1,9 MB · Weergaven: 54
Hidden sheets

Momenteel heb ik een aantal oplossingen verwerkt en aangepast.
Code:
Sub Start()
ThisWorkbook.ActiveSheet.Visible = False
Sheets("Start").Select
End Sub

Als tweede om het openen en sluiten van de tabbladen op het hoofd tabblad.
Code:
Sub Deel2()
Sheets("Deel 2").Visible = True
Sheets("Deel 2").Select
[B12].Select
End Sub

En deze om het tabblad te sluiten bij het verlaten Deze staat onder worksheet. En zal dus bij elk tabblad moeten worden opgesteld
Code:
Private Sub Worksheet_Deactivate()
Sheets("Deel 2").Visible = xlSheetHidden
End Sub

Misschien dat er een kortere methode is, dat weet ik niet. Momenteel werkt dit
Zover dank voor alle reacties
 

Bijlagen

  • TestMap.xlsm
    29,8 KB · Weergaven: 38
In ThisWorkbookmodule.
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
 Sh.Visible = Sh.Name = "Start"
End Sub


Of:
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
 If Sh.Name <> "Start" Then Sh.Visible = xlSheetHidden 'of 0
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan