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

Bepaalde terugkerende routines vastleggen

Status
Niet open voor verdere reacties.

allard1

Gebruiker
Lid geworden
5 dec 2006
Berichten
314
Beste excel experts,

Ik ben al lange tijd bezig met VBA en excel. Wat mij steeds meer begint te storen is de uitgebreidheid en onleesbaarheid van de codes. Daar waar ik in het verleden alles onder elkaar plakte en steeds weer opnieuw het wiel uitvond, heb ik nu al ontdekt hoe ik bepaalde zaken in modules kan vastleggen. Maar ik loop ergens tegenaan

Ik ben nu bezig met een sheet waarmee je allerhande andere sheets kunt openen. Ik heb een code geschreven waarmee ik alles kies en open. zie onderstaande code:
Code:
Sub test_DBI()
On Error GoTo Foutafhandeling
Dim locatie As String
Dim bestandsnaam As String
Dim volledig_pad As String

locatie = "C:\test"
bestandsnaam = Worksheets("sheet_locaties").Range("b7").Text
volledig_pad = locatie & bestandsnaam

ChDir locatie
    Workbooks.Open Filename:= _
        volledig_pad
        
Foutafhandeling:
Call Fout
Exit Sub
End Sub

Werkt zoals het moet, alleen zou ik zaken als locatie ergens anders vast willen leggen. C:\test dient hier als voorbeeld, maar is in werkelijkheid veel langer. Kan ik deze ook vastleggen en vervolgens oproepen zoals met de foutafhandeling Call fout, maar dan call pad oid?

Wie heeft een idee

Bedankt!
 
Code:
Ik ben al lange tijd bezig met VBA en excel. Wat mij steeds meer begint te storen is de uitgebreidheid en onleesbaarheid van de codes.
Dan heb je mijn bijdragen in dit forum en webforms gemist

Jouw code kan, zonder enige reduktie van funktionaliteit vervangen worden door

Code:
Sub openbestand()
   if dir("C:\test\" & [sheet_locaties!B7])<>"" then workbooks.open "C:\test\" & [sheet_locaties!B7]
End Sub

of
Code:
Sub openbestand2()
  on error resume next
  workbooks.Add "C:\test\" & [sheet_locaties!B7]
End Sub
Toelichting:
- alle variabelen zijn overbodig, de declaraties dus ook.
- om een macro aan te roepen is call overbodig: gebruik gewooon de naam van de macro
- om een bestand te openen hoef je niet van directory te wisselen.
- maak geen gebruik van 'labels' in de VBA-code (in jouw voorbeeld Foutafhandeling:)
- een instruktie Exit Sub voor End Sub is het ointrappen vna een open deur: overbodig
- hoe beter doordacht je code hoe overbodiger foutafhandleingsprocedures.

Code:
Sub test_DBI()
On Error GoTo Foutafhandeling
Dim locatie As String
Dim bestandsnaam As String
Dim volledig_pad As String

locatie = "C:\test"
bestandsnaam = Worksheets("sheet_locaties").Range("b7").Text
volledig_pad = locatie & bestandsnaam

ChDir locatie
    Workbooks.Open Filename:= _
        volledig_pad
        
Foutafhandeling:
Call Fout
Exit Sub
End Sub
 
Code:
Ik ben al lange tijd bezig met VBA en excel. Wat mij steeds meer begint te storen is de uitgebreidheid en onleesbaarheid van de codes.
Dan heb je mijn bijdragen in dit forum en webforms gemist

Jouw code kan, zonder enige reduktie van funktionaliteit vervangen worden door

Code:
Sub openbestand()
   if dir("C:\test\" & [sheet_locaties!B7])<>"" then workbooks.open "C:\test\" & [sheet_locaties!B7]
End Sub

of
Code:
Sub openbestand2()
  on error resume next
  workbooks.Add "C:\test\" & [sheet_locaties!B7]
End Sub
Toelichting:
- alle variabelen zijn overbodig, de declaraties dus ook.
- om een macro aan te roepen is call overbodig: gebruik gewooon de naam van de macro
- om een bestand te openen hoef je niet van directory te wisselen.
- maak geen gebruik van 'labels' in de VBA-code (in jouw voorbeeld Foutafhandeling:)
- een instruktie Exit Sub voor End Sub is het ointrappen vna een open deur: overbodig
- hoe beter doordacht je code hoe overbodiger foutafhandleingsprocedures.

Code:
Sub test_DBI()
On Error GoTo Foutafhandeling
Dim locatie As String
Dim bestandsnaam As String
Dim volledig_pad As String

locatie = "C:\test"
bestandsnaam = Worksheets("sheet_locaties").Range("b7").Text
volledig_pad = locatie & bestandsnaam

ChDir locatie
    Workbooks.Open Filename:= _
        volledig_pad
        
Foutafhandeling:
Call Fout
Exit Sub
End Sub


Bedankt voor je verhelderende commentaar :) Het gebruik van Labels had ik al eens eerder gehoord alszijnde ouderwets (voorgaande heeft te maken met een cursus basic die ik gedaan heb online, het was wel een handige functie vond ik :S)
Maar even een opmerking mijnerzijds. Er zal uiteindelijk een lijst komen met plusminus 25rekensheets. Vandaar ook mijn vraag om het pad elders vast te leggen, of denk ik dan erg fout?
 
In mijn voorbeeld geef ik aan dat 1 regel code voldoende is; korter kan niet. Als je gegevens elsers neerzet leidt dat alleen tot uitbreiding van de code en grotere onoverzichtelijkheid. Niet doen, dus.
 
In mijn voorbeeld geef ik aan dat 1 regel code voldoende is; korter kan niet. Als je gegevens elsers neerzet leidt dat alleen tot uitbreiding van de code en grotere onoverzichtelijkheid. Niet doen, dus.

I rest my case :) Dank voor je hulp en ik ga weer fluitend verder :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan