hide en unhide sheets

Status
Niet open voor verdere reacties.

klupwuk

Gebruiker
Lid geworden
23 apr 2008
Berichten
13
Ik probeer een macro te schrijven die een x aantal sheets in een workbook hide, op basis van een selectie die in de eerste sheet geplaatst is.
Ondertussen ben ik er achter dat de macro om iets te hiden als volgt is:

sub HideSheet()
Sheet1.Visible = xlSheetHidden
end sub

Anders kan de volgende ook:

sub HideSheet()
Sheet1.Hidden = True
end sub

Maar er moet dus nog een If statement tussen waarin een serrie cellen van de frontpage af word gehaald en daarin staat True of False en de naam van de sheet.

Bij True moet die sheet wel getoond worden, bij false niet.

Ik hoop dat iemand me daarbij kan helpen
 
Code:
Sub sheetstonenofniet()

    Dim r As Range
    
    For Each r In Sheets("naamvandefrontpage").Range("bereikmetdebladnamen")
'bvb.: Sheets("Sheet6").Range("A1:A6")
    
        If r.Offset(0, 1).Value Then
            Sheets(r.Value).Visible = xlSheetHidden
        Else
            Sheets(r.Value).Visible = xlSheetVisible
        End If
    
    Next

End Sub

In dat bereik komen de namen van de sheets, in de kolom ernaast WAAR of ONWAAR. Bij WAAR is het zichtbaar, bij ONWAAR onzichtbaar.

Opgepast: je moet wel zorgen dat niet alle sheets verborgen worden ;) En ook dat er geen typfouten staan in de namen. Anders knalt de macro eruit.

M.a.w. zet er nog een paar extra checks bij om dit op te vangen.

Wigi
 
of als de cellen de waarde waar/onwaar hebben
Code:
Sub sheetstonenofniet()
  For Each r In Sheets([COLOR="seagreen"]1[/COLOR]).Range("[COLOR="SeaGreen"]A1:A6[/COLOR]")
    Sheets(r.Value).Visible = r.offset(0,1).value
  Next
End Sub
 
Laatst bewerkt:
snb, haal de " " nog weg rond WAAR, anders werkt het niet in een Engelse Excel versie zoals bij mij ;)
 
bij beide manieren krijg ik dezelfde meededeling, namelijk:

subscript out of range.
Ik heb geen idee...
 
Bestaan alle tabbladen die je in die eerste kolom zet?
 
Sub CollectWorkbook()

'ActiveSheet.Unprotect Password:="*******"
ActiveSheet.Select

Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

x = Range("FirstRow").Value
y = Range("FirstCol").Value

Dim currentSheet As String

Cells(x, y).Select

Do While Cells(x, y).Value <> ""

If Cells(x, y).Value = False Then
'1) pick up sheetname from Frontpage
currentSheet = Cells(x, y).Offset(0, 2).Value
'2) select sheet
Worksheets(currentSheet).Select
'ActiveSheet.Unprotect Password:="********"
'3) disable evdre cell
Range("A1").Select
ActiveCell.FormulaR1C1 = Cells(x, y).Offset(0, 3).Value
'ActiveSheet.Protect Password:="*******"
'4) hide selected sheet
ActiveWindow.SelectedSheets.Visible = False

End If
Worksheets("FrontPage").Select
x = x + 1
Loop

Worksheets("FrontPage").Select
'ActiveSheet.Protect Password:="*****"

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub
-------------------------------------------------------------------------------------------------------------------------------
Sub ResetWorkbook()

'ActiveSheet.Unprotect Password:="******"

Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

x = Range("FirstRow").Value
y = Range("FirstCol").Value

Dim hiddenSheet As String

Cells(x, y).Select

Do While Cells(x, y).Value <> ""

If Cells(x, y).Value = False Then
'1) pick up sheetname from Frontpage
hiddenSheet = Cells(x, y).Offset(0, 2).Value
'2) Unhide hiddenSheet
Worksheets(hiddenSheet).Visible = True
'3) reset evdre cell
Range("A1").Select
'ActiveSheet.Unprotect Password:="********"
Range("A1").Value = Cells(x, y).Offset(0, 3).Value
'ActiveSheet.Protect Password:="**********"
End If

Worksheets("FrontPage").Select
x = x + 1
Loop

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

'ActiveSheet.Protect Password:="********"

End Sub

---------------------------------------------------------------------------------------------

De macro's zijn iets uitgebreider geworden en ietsjes moeilijker.
Ik loop alleen nog vast op het feit dat de macro een formule moet weghalen die normaal niet door Excel wordt ondersteund, maar door een grote plug-in wel.

De macro haalt wel de formule weg, maar de tweede sub zou de formule weer moeten terugzetten.
Die sub zou namelijk alles weer moeten terugzetten in zijn oude staat. Alleen omdat de formule die in de eerste sub onderbroken is, niet wordt ondersteund door Excel kan de Macro er niet een = bij zetten. De rest van de formule wordt wel teruggezet, maar zonder de = aan het begin snapt de plug-in niet dat hij moet gaan draaien.

enige suggesties???
 
- Dit is een andere vraag, dus dan moet daarvoor een nieuwe topic gemaakt worden. 1 vraag per topic.

- Gebruik code tags om de code die je post, deftig uit te lijnen. Dat is het # symbooltje.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan