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

foutmelding: kan project of bibliotheek niet vinden?

Status
Niet open voor verdere reacties.

westra77

Gebruiker
Lid geworden
2 mrt 2007
Berichten
149
hallo

ik heb een excebestand, met onderstaande macro;
het bestand werkt juist. nu heb ik het bestand gemaild naar verschillende collega's
bij iedereen werkt dit prima, echter 1 collega krijgt de onderstaande melding.
hij heeft gekozen voor macro's inschakelen.
is er een beveiliging waardoor hij met deze macro niet kan werken

kan het project of de bibliotheek niet vinden

Code:
Sub voorbeeldaangepast()
ActiveSheet.Unprotect ("joppe")
    Dim rDatums As Range
    Dim i As Integer
      
    Set rDatums = Range("D109")

    If rDatums.Value = "" Then

        i = 4

    Else
    
    Set rDatums = Range("D109:" & Cells(109, Cells(109, Columns.Count).End(xlToLeft).Column).Address)
    
    If WorksheetFunction.CountIf(rDatums, Range("B109").Value) > 0 Then
        
        i = rDatums.Cells(1).Column
        Do Until Cells(109, i).Value = Range("B109").Value
            i = i + 1
        Loop
        
    Else
    
        i = Cells(109, Columns.Count).End(xlToLeft).Column + 1
        
    End If
        
    End If
    
    Range("B109:B131").Copy
    Cells(109, i).PasteSpecial xlPasteValuesAndNumberFormats
    Application.CutCopyMode = False
     Range("D109:iv131").Select
    Selection.Sort Key1:=Range("D109"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
        Range("B39").Select
        [COLOR="Blue"]strPrompt[/COLOR] = "Gegevens zijn weggeschreven." & vbCrLf & "Indentieke datums zijn overschreven"
    MsgBox strPrompt, vbInformation, "Gegevens registratie"
    
ActiveSheet.Protect ("joppe")

End Sub
 
Zo te zien heb je strPrompt niet gedeclareerd.
Dat kan alleen als option explicit uitstaat, bij de collega staat dit w.s. aan.

dus even

Code:
dim strPrompt as string

is mogelijk de oplossing:


mvg leo
 
hallo

ik heb de code verandert in

Code:
dim strPrompt as string
strPrompt = "Gegevens zijn weggeschreven." & vbCrLf & "Indentieke datums zijn overschreven"

hoe kan mijn collega option explicit uitzetten?
alvast bedankt:thumb:
 
hoe kan mijn collega option explicit uitzetten?

Bovenaan in de module moet Option Explicit staan.

Maar volgens mij is dit niet de oorzaak van het probleem.

In de VBE, bij Extra > Verwijzingen (Tools > References) moet je eens vergelijken welke vinkjes jullie beiden hebben aanstaan.

Wigi
 
Option Explicit moet je eigenlijk niet weghalen.
Dat verplicht n.l. om alle variabelen te declareren en dat is altijd aan te raden bij programmeren.

Wanneer je dan niet declareert komt er een foutmelding
In een klein project wordt dan aangegeven dat er een variabele niet gedefinieerd is.
In een groter project met meerdere variabelen meldt excel dat een project of bibliotheek niet gevonden wordt.
Daar de code bij de niet-gedeclareerde string stopt (daarom is deze toch blauw aangeven?) is dit toch goed de mogelijke oorzaak van de foutmelding.
Je kunt het makkelijk zelf proberen door option explicit even boven de bovenste sub in de module te zetten.

Bij je collega vind je deze mogelijk bovenaan de module van het ThisWorkbook blad.
Het vinkje wat dan verschillend is, is in de VBAeditor, bij menu extra, tab editor > variabelen declareren vereist.
(staat b.v. op mijn werk standaard aan)
mvg leo
 
Volgens mij heb je hier gelijk Leo.

Al kan diezelfde foutmelding ook optreden bij het ontbreken van 1 of meer bibliotheken in Excel (heb ik bij een klant een paar weken geleden nog gehad). Uiteraard stopt de code dan niet bij een variabele maar bij hetgeen de bibliotheek vereist.

Maar hier in dit geval is het niet declareren de oorzaak naar mijn mening :thumb:

Wigi
 
even kort samengevat:
als ik het juist heb, kan ik dmv de macro code aan te passen:
Code:
dim strPrompt as string
strPrompt = "Gegevens zijn weggeschreven." & vbCrLf & "Indentieke datums zijn overschreven"
het probleem omzeilen
ik moet sowieso onderstaande controleren:
In de VBE, bij Extra > Verwijzingen (Tools > References) moet je eens vergelijken welke vinkjes jullie beiden hebben aanstaan.
als laatste kan ik nog controleren of :
Het vinkje wat dan verschillend is, is in de VBAeditor, bij menu extra, tab editor > variabelen declareren vereist.
deze is uitgeschakeld (bij mijn eigen pc wel het geval)

als ik bovenstaande doorloop heb ik jullie dan goed begrepen?:D
alvast bedankt voor de reacties
 
als ik bovenstaande doorloop heb ik jullie dan goed begrepen?:D

Ja.

Declareer altijd variabelen, en op een juiste manier. Zo kom je daarmee niet in de problemen, ongeacht bepaalde instellingen bij gebruikers.

Succes ermee.

Wigi
 
Wim,
Ik kwam jouw commentaar bij deze thread tegen en verstout mij het volgende te vragen:
Ik heb een programma met 8 modules die geen van alle Option Explicit hebben, waar bovendien tons aan ongedeclareerde variabelen in staan.
Is er een manier om alle ongedeclareerde variabelen in een keer te declareren?
BVD
Joop
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan