tomswaelen
Gebruiker
- Lid geworden
- 8 dec 2004
- Berichten
- 349
Ik zit met een aantal problemen met VBA in mijn Excel:
1. hij geeft een foutmelding wanneer ik een tweede Excel-bestand open (object out of range of zoiets)
2. ik woon in Belgie, dus Excel moet vertaald worden naar het Frans
1. komt volgens mij omdat ik niet gewerkt heb met 'absolute' referenties naar mijn objecten. Excel gaat altijd uit van het actieve workbook, dus als je een nieuwe file opent, is het bestand met de VBA erin, niet meer het actieve bestand. Dus dat valt volgens mij op te lossen met volledige referenties naar mijn objecten
2. mijn code verwijst dus naar Nederlandstalige bestandsnamen en werkbladen, met als resultaat dat die zaken in de code ook in het Frans moeten gezet worden.
Probleem 2 kan volgens mij verkleind worden door vooraf je bestandsnaam en werkbladnamen te declareren en vanaf dan met die 'codenamen' te werken in de code. In de Franse versie zou ik dan alleen maar de eerste declaratie moeten veranderen.
Klopt mijn oplossing hiervoor? Of heeft iemand nog een suggestie?
Ik heb zelf al zitten zoeken hoe dat zit met zo'n Dim statements, maar ben er nog niet helemaal uit. Kan iemand mij op weg helpen met onderstaand stukje code? Zoals je ziet worden de objecten met volledige referenties op de duur erg lang ook...
1. hij geeft een foutmelding wanneer ik een tweede Excel-bestand open (object out of range of zoiets)
2. ik woon in Belgie, dus Excel moet vertaald worden naar het Frans

1. komt volgens mij omdat ik niet gewerkt heb met 'absolute' referenties naar mijn objecten. Excel gaat altijd uit van het actieve workbook, dus als je een nieuwe file opent, is het bestand met de VBA erin, niet meer het actieve bestand. Dus dat valt volgens mij op te lossen met volledige referenties naar mijn objecten
2. mijn code verwijst dus naar Nederlandstalige bestandsnamen en werkbladen, met als resultaat dat die zaken in de code ook in het Frans moeten gezet worden.
Probleem 2 kan volgens mij verkleind worden door vooraf je bestandsnaam en werkbladnamen te declareren en vanaf dan met die 'codenamen' te werken in de code. In de Franse versie zou ik dan alleen maar de eerste declaratie moeten veranderen.
Klopt mijn oplossing hiervoor? Of heeft iemand nog een suggestie?
Ik heb zelf al zitten zoeken hoe dat zit met zo'n Dim statements, maar ben er nog niet helemaal uit. Kan iemand mij op weg helpen met onderstaand stukje code? Zoals je ziet worden de objecten met volledige referenties op de duur erg lang ook...
Code:
Private Sub Worksheet_Calculate()
If Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 1 - Dossiergegevens").Range("A15").Value = "NOK" Then
Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 2 - Gegevens aanvrager").Visible = xlSheetVeryHidden
Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 3 - Gegevens opzoeking").Visible = xlSheetVeryHidden
Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 4 - Validatie en afdrukken").Visible = xlSheetVeryHidden
Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Opvragen rekeninginformatie").Visible = xlSheetVeryHidden
End If
If Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 2 - Gegevens aanvrager").Visible = True Then Exit Sub
If Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 1 - Dossiergegevens").Range("A15").Value = "OK" Then
MsgBox "U kan vanaf nu naar tabblad 'Stap 2 - Gegevens aanvrager' gaan."
Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 2 - Gegevens aanvrager").Visible = xlSheetVisible
Else
Application.Workbooks("Opvragen rekeninginformatie ikv overlijden.xlsm").Worksheets("Stap 2 - Gegevens aanvrager").Visible = xlSheetVeryHidden
End If
End Sub