• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Hide_UnHIde vba code

Status
Niet open voor verdere reacties.
Wat leuk Peter dat je toch verder mee bezig was :)

Het wordt een soort van uitdaging, vind je niet? En het gevoel die je krijgt als het wel lukt ;) hahaha

Maar het werkt bij mij niet. Altans, ik krijg een fout melding.

Wat waren mijn stappen:

(even eerst ter info)

Mijn bestanden dragen de namen: Urenregistratie 1e kwartaal 2013, Urenregistratie 2e kwartaal 2013, Urenregistratie 3e kwartaal 2013, Urenregistratie 4e kwartaal 2013.

Voor het testen werk ik met de bestanden van de 3e en 4e kwartaal.

Nu de stappen:

1. De code heb ik gekopieerd naar het bestand van de 3e kwartaal.

2. De tabel van de index pagina heb ik ook overgenomen naar de index van mijn bestand. Tabel begint nu in kolom O aangezien in mijn org. index bestand kolom A t/m N zijn reeds bezet.

3. De code heb ik aangepast:

Code:
Sub Hide_UnHIde()

    Dim s, v, f As String
    
    Application.ScreenUpdating = False
    wSheet = Application.Caller
    v = WorksheetFunction.VLookup(wSheet, Range("[COLOR="#FF0000"]O1:P66[/COLOR]"), 2, False)                     'Opzoeken kwartaal = Qn
    s = ThisWorkbook.Path & "\[COLOR="#FF0000"]Urenregistratie 4e kwartaal 2013[/COLOR] " & v & " " & Cells(2, 12).Value & ".xlsm" 'Complete bestandsnaam incl. pad
    f = "[COLOR="#FF0000"]Urenregistratie 4e kwartaal 2013[/COLOR] " & v & " " & Cells(2, 12).Value & ".xlsm"                      'Alleen de bestandsnaam
    Workbooks.Open Filename:=s
    Workbooks(f).Activate
    Workbooks(f).Sheets(wSheet).Visible = Not Workbooks(f).Sheets(wSheet).Visible
    If Workbooks(f).Sheets(wSheet).Visible Then Application.Goto Workbooks(f).Sheets(wSheet).Range("A1")
    Application.ScreenUpdating = True
    
End Sub

4. Dan heb ik de "command button" van week 41 in de index (van bestand 3e kwartaal) gehangen aan de macro van de code

5. Als ik dan op de opdrachtknop klik krijg ik de volgende fout melding:

eigenschap VLookup van klasse WorksheetFunction kan niet worden opgehaald

:(
 
De foutmelding wordt (denk ik) veroorzaakt doordat de waarde niet kan worden gevonden. Nu heb ik de knop met opschrift "Week 32" de naam "Week32" (dus zonder spatie) opgegeven. De vlookup gaat dus zoeken naar de waarde "Week32" als de knop "Week 32" wordt ingedrukt. Daarnaast mis je de truc van mijn samenstelling, waarschijnlijk omdat ik "Qn" heb gebruikt i.p.v. "ne kwartaal".

Mijn truc is dat o.b.v. de waarde van de knop via de vlookup wordt bepaald wat het bijbehorende kwartaal is, dus welke sheet moet worden geopend. Daarnaast wordt overigens ook het jaartal opgehaald uit cel L2 (cells(2, 12). In mijn geval verwijst "Week32" dus naar "Q3", en wordt het bestand met de volgende naam geopend: "Urenregistratie Q3 2013.xlsm". Je zult dus sowieso de volgende zaken moeten wijzigen op de Index-sheet. Q1 --> 1e kwartaal; Q2 --> 2e kwartaal, etc. Het jaartal in een cel plaatsen (dus bv. cel Q2) en de bijbehorende range aanpassen (cells(2, 17). En mogelijk een spatie tussenvoegen tussen "Week" en het weeknummer in kolom Q
 
Peter, bedankt voor de duidelijk uitleg.

De code werkt prima maar is echter niet exact wat ik zoek.

Met deze code kan ik dus de andere bestanden openen. Dat is prima. Het probleem is dat als ik op een week klik die naar een sheet in de huidige bestand zit, bijvoorbeeld week32 in de 3e kwartaal bestand, en deze bestand is dus reeds open, krijg ik de melding dat het bestand al open is en of ik het opnieuw wil openen (dus afsluiten en opnieuw open).

Denk je dat het mogelijk is om de twee codes te combineren?

Dus de twee codes in de module te zetten. De eerste code gebruiken alleen voor de huidige bestand en jouw code voor de andere bestanden? Ik had het geprobeerd maar de namen / titel (weet niet precies wat de goede term is) van de codes is hetzelfde en dat kan dus niet:

Sub Hide_UnHIde()

Dus had ik geprobeerd om de oude code de naam te geven:

Sub Hide_UnHIde_2()

maar blijkbaar kan dat ook niet
 
Met wat kunst en vliegwerk kom ik tot de volgende code:
Code:
Sub Hide_UnHIde()

    Dim wb As Workbook
    Dim s, v, f As String
    
    Application.ScreenUpdating = False
    On Error Resume Next
    wSheet = Application.Caller
    v = WorksheetFunction.VLookup(wSheet, Range("O1:P66"), 2, False)
    s = ThisWorkbook.Path & "\Urenregistratie " & v & " " & Cells(2, 17).Value & ".xlsm"
    f = "Urenregistratie " & v & " " & Cells(2, 17).Value & ".xlsm"
    Set wb = Workbooks(f)
    If wb Is Nothing Then
        Workbooks.Open Filename:=s
    End If
    Workbooks(f).Activate
    Workbooks(f).Sheets(wSheet).Visible = Not Workbooks(f).Sheets(wSheet).Visible
    If Workbooks(f).Sheets(wSheet).Visible Then Application.Goto Workbooks(f).Sheets(wSheet).Range("A1")
    Application.ScreenUpdating = True
    
End Sub

N.B.: Het loopt dus tegen een fout aan bij "Set wb = Workbooks(f)" als f nog niet is geopend. Maar door de "On Error Resume Next" klapt hij er niet uit, maar gaat naar de volgende stap.
 
Wat zal zonder je hulp moeten doen Peter?

hij doet het perfect!!!!!

Erg blij mee!!!!

Hartelijk dank voor alle moeite en tijd en voor alle aandacht en geduld.

Fantastisch!!!

(als je referenties moet hebben voor je werk stuur ze even naar mij door, zal je de hemel in prijzen hahaha)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan