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

GaNaarCel procedure overal beschikbaar maken

Status
Niet open voor verdere reacties.

gGerretje

Gebruiker
Lid geworden
12 mrt 2008
Berichten
476
Ik heb de volgende procedure geschreven om met een opdrachtknop naar een bepaalde cel te gaan.
Code:
Sub GaNaarCel(locatie As Variant)
    Dim doelCel As Range
    '##### Controleer of de variabele locatie een string (celnaam) of een range-object is                           #####
    Select Case TypeName(locatie)
        Case "String"
            Set doelCel = Range(locatie)
        Case "Range"
            Set doelCel = locatie
        Case Else
            MsgBox "Ongeldige parameter. Geef een geldige celnaam of celreferentie op.", vbExclamation
            Exit Sub
    End Select
    Application.Goto Reference:=doelCel, Scroll:=True     '##### Ga naar de cel en zorg dat deze bovenaan staat     #####
    ActiveWindow.ScrollRow = doelCel.Row
End Sub

Die cel (variabele staat in het click-event in de aanroep van de procedure.
Als ik die procedure in het werkblad of een aparte module in het bestand definieer gaat alles goed. Maar ik zou hem in mijn persnlk.xls willen zetten om hem overal te kunnen aanroepen. Dat werkt echter niet. Wat moet ik erin aanpassen om hem wel te laten werken?

Alvast dank voor jullie hulp.

Groeten,
Ger
 
Zorg ervoor dat e.e.a. wordt uitgevoerd op de Activesheet en niet in persnlk.xls
Of maak er een invoegtoepassing van.
 
Laatst bewerkt:
Hoi Ed,

Waar zet ik hem dan? En wat pas ik aan?
Ik zit vaker met dat probleem. Ik krijg wel eens voorbeelden die ik dan overneem of aanpas maar een uitleg zit daar meestal niet bij. Dus dan blijft het meestal maar wat proberen.
Zou je even duidelijk willen aangeven wat ik doe en eventueel waarom.

Bedankt alvast voor je hulp.
 
Geef eens aan voorbeeld van hoe je die Sub aanroept.
 
Of maak een verwijzing naar je VBAProject in je Personal.xlsb. Die verwijzing moet je dan wel opnemen in ieder Excelbestand waarin je functies uit je Personal.xlsb wilt gebruiken. Het is dan handig om je VBAProject in Personal.xlsb een andere naam te geven dan je VBAProject in je aanroepende bestand, bijvoorbeeld:
1734985971990.png
 
Heb je de suggestie van AHulpje al geprobeerd?
 
Daar was ik mee bezig. Ben nog even aan het zoeken waar mijn persnk.xls staat.
Personal.xlsb heb ik niet. Ik las ook ergens dat ik de procedures of functie die daar instaan niet gewoon aangeroepen kunnen worden maar altijd moeten worden aangeroepen met Personal.xlsb!functienaam.
Dat heb ik nog niet uitgeprobeerd omdat mijn persnlk.xls meestal voldoet.

Net geprobeerd om naar Persnlk.xls te verwijzen maar dan blijkt de naam strijdig te zijn met een bestaand project, module of objectbibliotheek.
Wat een gedoe hè.
 
Laatst bewerkt:
Welke versie van Office gebruik je?
Ik verwacht dat het PERSONAL.XLSB zal zijn.
Deze kan je dan vinden in:
%appdata%\Microsoft\excel\XLSTART

Dat kan je zo kopiëren en in de adresbalk van je verkenner plakken.

Met de Sub GaNaarCel in de PERSONAL.XLSB kan je dit voor je knop gebruiken:
Code:
Application.Run "PERSONAL.XLSB!GaNaarCel", "AutomatischOpstarten"
 
Laatst bewerkt:
Heb je dat bestand al gevonden?
Zie m'n aanpassing in #9.
 
En die wordt ook in VBA geladen als je Excel start?
Dan wordt het dus:
Code:
Application.Run "persnlk.xls!GaNaarCel", "AutomatischOpstarten"
 
Ja, Dat stond hij altijd al. Ik heb hem nu nog eens opgeslagen en Excle afgesloten en opnieuw opgestart.
Persnlk.xls staat erin.
In een van de modules staat de procedure:

Code:
Sub GaNaarCel(locatie As Variant)
    Dim doelCel As Range
    '##### Controleer of de variabele locatie een string (celnaam) of een range-object is                                            #####
Select Case TypeName(locatie)
        Case "String"
            Set doelCel = Application.ActiveSheet.Range(locatie)     '##### Expliciet aangeven om het actieve werkblad gebruiken     #####
        Case "Range"
            Set doelCel = locatie
        Case Else
            MsgBox "Ongeldige parameter. Geef een geldige celnaam of celreferentie op.", vbExclamation
            Exit Sub
    End Select
    Application.Goto Reference:=doelCel, Scroll:=True     '##### Ga naar de cel en zorg dat deze bovenaan staat                      #####
    ActiveWindow.ScrollRow = doelCel.Row
End Sub

en de click-event van mijn knop ziet er zo uit:

Code:
Private Sub btn_AutomatischOpstarten_Click()
    Application.Run "PERSNLK.XLS!GaNaarCel", "AutomatischOpstarten"
End Sub

Andere macro's in persnlk.xls werken wel maar de knop doet nada, nothing, ne rien, niks, njet.
Ik snap het niet meer.
bij call GaNaarCel etc krijg ik fout: kan het project of bibliotheek niet vinden
bij application Run etc krijg ik fout 1004: PERSNLK.XLS!GaNaarCel kan niet worden uitgevoerd
 
Werkt hier prima, dus geen idee waarom bij jou niet.
Laat eens een schermafdruk van je project verkenner zien.
 
"Net geprobeerd om naar Persnlk.xls te verwijzen maar dan blijkt de naam strijdig te zijn met een bestaand project, module of objectbibliotheek."
Die melding wordt veroorzaakt doordat het VBAProject in je aanroepende document dezelfde naam heeft als in je Persnlk.xls.
Als je het VBAProject in je Persnlk.xls een andere naam geeft, bijvoorbeeld VBALibrary, zie mijn schermafdruk in #5, en je maakt een verwijzing naar VBALibrary, dan kun je de subs en functions in VBALibrary gewoon gebruiken zonder er Persnlk.xls! voor te hoeven zetten.
 
@ Ahulpje: naam gewijzigd en VBAlibrary en ernaar verwezen (zie schermprint van de projectverkenner)
maar nog steeds niets. (dezelfde fouten)
@ed bijgaand de projectverkenner
 

Bijlagen

  • Afbeelding3.png
    Afbeelding3.png
    27 KB · Weergaven: 9
Werkt hier zowel met als zonder de verwijzing prima.
Geen idee waarom dan bij jou niet.
 
ja ik gebruik die functie uit EigenFuncties.xlam

@ Ed: dan zal er wel ergens een bestand ontbreken of een verwijzing missen.
Je hebt je in ieder geval geweldig ingezet om me t e helpen. Dank je wel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan