• 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.

Bij openen Excel file automatisch positioneren op vandaag

Status
Niet open voor verdere reacties.

stimmy

Gebruiker
Lid geworden
8 nov 2016
Berichten
33
Ik heb in Excel een jaarkalender voor personeelsplanning (1 kolom per dag). Boven elke kolom staat de datum. Ik zou in een hulpcel de datum van vandaag kunnen zetten en zou graag hebben dat bij het openen van de Excelfile automatisch de cel geselecteerd wordt met de datum van vandaag door vergelijking met de hulpcel (en dat deze kolom dan de meest linkse is die zichtbaar is na de eerste geblokkeerde kolommen waarin de gegevens van het personeel staan).

Is dit mogelijk via een eenvoudige functie in VBA?
 
Er is zelfs geen hulpcel nodig:
Code:
Private Sub Workbook_Open()
    Application.Goto Sheets("Data").Rows(1).Find(Date, LookAt:=xlWhole)
    ActiveWindow.ScrollColumn = ActiveCell.Column
End Sub
 
Laatst bewerkt:
Ik heb de code in VBA geplakt onder "ThisWorkbook" en in jouw code "Data" vervangen door "Planning" (naam van mijn werkblad).

Bij openen van de Excel-file krijg ik nu echter "Fout 5 tijdens uitvoering: ongeldige procedure-aanroep of ongeldig argument" en deze lijn staat gemarkeerd in de foutopsporing:

Application.Goto Sheets("Planning").Rows(1).Find(Date, LookAt:=xlWhole)
 
Er is zelfs geen hulpcel nodig:

Mijn visie hierop:

Misschien niet maar ik zou er wel 1 gebruiken.
Dat lijkt mij handiger dan een datum op te zoeken, waarbij dat niet evident is in Excel, zeker niet als je dat doet voor gebruikers met verschillende instellingen en datumweergaves (EN, NL, ...)
Sowieso verander je door het Find commando te gebruiken ook een vinkje (dat bij "heel woord zoeken" zal nu ingeschakeld staan). Het kan tot verwarring leiden, als (zoek)instellingen veranderd zijn zonder dat je dat zelf bewust gedaan hebt. Ik spreek uit ondervinding ;-)

Voor mij zou ik INDEX( VERGELIJKEN toepassen, inlusief een ISFOUT( functie errond die een foutmelding kan geven.
De VBA-code checkt die extra cel en met een simpele IF heb je direct de fouten afgevangen.
 
Laatst bewerkt:
Inderdaad.
En om fouten te vermijden:

=ALS.FOUT(VERGELIJKEN(A2;8:8;0);1)
 
Het voordeel van een systeem in de struktuur van een werkblad:

Code:
Private Sub Workbook_Open()
    Application.Goto Sheets("Planning").Cells(8, 9 + 3 * (Date - Sheets("Planning").Cells(8, 9).Value)), True
End Sub

NB. Onafhankelijk van internationale intstellingen en Excel eigenaardigheden.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan