Avatar billede meiland Mester
29. maj 2009 - 09:23 Der er 6 kommentarer

Userform driller

Hej Alle !

Jeg har lavet en skabelon med en userform, kaldet UserForm1.
Jeg har installeret skabelonen på 15 computere uden problemer.

Nu har jeg lige installeret den på pc nr. 16, men her går det galt. Når jeg bruger skabelonen, kaldes flg. kode:

Private Sub Document_New()
  UserForm1.Show
End Sub

Det giver følgende fejl:
Runtime error '-2147024769 (8007007f)'
Automation error
Den angivne procedure blev ikke fundet

Userform1 eksisterer og der er ikke rettet i skabelonen efter jeg startede med at installere den.
Skabelonen er installeret på både bærbare og stationære computere. Windows XP og Office 2003.

Hvad sker der ?? og hvordan kan jeg rette fejlen ??
Jeg har prøvet at oprette en ny form, og så kopiere kode og form over i denne nye userform2, men med samme resultat. Jeg har før haft samme problem, men dette trick plejer at virke, bare ikke denne gang.
Avatar billede Lene Fredborg Ekspert
29. maj 2009 - 23:33 #1
Har du prøvet at steppe gennem koden med F8, så du kan se, i hvilken linje fejlen opstår?

Hvad foregår der i din UserForm1 - er der kald til andre procedurer fra koden deri?
Avatar billede meiland Mester
30. maj 2009 - 19:44 #2
Hej Lene !

Fejlen opstår i linie 2 i proceduren

Private Sub Document_New()
  UserForm1.Show
End Sub

altså userform1.show

Som jeg også skrev fungerer koden og skabelonen på 17 andre komputere.....
Avatar billede Lene Fredborg Ekspert
31. maj 2009 - 00:22 #3
Er du helt sikker på, at det er der, fejlen opstår? Hvis UserForm1 findes, burde det ikke være tilfældet, og det burde ikke kunne give den konkrete fejlmelding. Hvis der opstår en fejl under afvikling af en UserForm, og hvis der ikke inde i koden til selve UserForm'en er lavet kode til fejlhåndtering, hopper VBA tilbage til det sted, hvorfra UserForm'en blev kaldt - og det er linjen UserForm1.Show.

Det var derfor, jeg spurgte, om du har prøvet at bruge F8 til at steppe gennem koden. Så vil du kunne se, præcis hvor fejlen opstår.
Avatar billede meiland Mester
02. juni 2009 - 11:17 #4
Det kan godt være at eg ikke forstår hvad du mener, men når dokumentet er en skabelon er den første kode, der afvikles:

Private sub document_new ()
  userform1.show
end sub

Da skabelonen fungerer 100% fejlfrit på 17 andre komputere, og det er 100% den samme kode, kan jeg ikke se at der kan være fejl i koden.
Omdøber jeg userform1 til userform2 og retter samtlige kald userformX.show og .hide får jeg samme fejl.
Avatar billede Lene Fredborg Ekspert
02. juni 2009 - 11:38 #5
Du skrev, at fejlmelding var: "Den angivne procedure blev ikke fundet". Den fejlmelding vil komme, hvis der i en makro er kald til en anden makro, som ikke findes. Linjen "userform1.show" kan ikke fremkalde den fejl.

Du har jo ikke vist din kode, så derfor har jeg ikke mulighed for at være præcis. Men den pågældende fejl kan komme, hvis der f.eks. inde i koden under userform1 er kald til en anden makro, som reelt ikke findes hos den pågældende bruger. Hvis 17 har denne makro, f.eks. i deres Normal.dot, mens nr. 18 ikke har, ville det kunne forklare, hvorfor det ikke virker ens. Det er derfor, jeg foreslog dig at bruge F8 til at finde ud af, præcis hvor fejlen opstår.
Avatar billede Lene Fredborg Ekspert
03. juni 2009 - 10:38 #6
Jeg har set på/testet din skabelon, og jeg kan ikke umiddelbart finde noget, som skulle give anledning til den pågældende fejl.

Jeg kan se, at du ikke har "Option Explicit" i toppen af moduler. Jeg vil stærkt anbefale dig at sætte det på som standard (Tools > Options > fanen Editor > Require Variable Declaration). I din kode er der en del variable, som ikke er erklærede. Det gør det langt sværere at sikre, at koden er korrekt. Det er dog ikke det, der er anledning til problemet i dette tilfælde.

Jeg ville stadig prøve at bruge F8 til at steppe gennem koden på den computer, hvor problemet opstår. Du kan først åbne selve skabelonen hos den pågældende og indsætte et break point i userform1.Show. Du kan også slå View > Watch Window til, højreklikke i vinduet Watches og tilføje en "watch": sæt Expression til Err.Number, Procedure til (All Procedures), Module til (All Modules) og Watch Type til Break When Value Changes. Så vil koden stoppe, første gang der opstår en fejl.

Ud over det tror jeg desværre ikke, jeg er i stand til at hjælpe dig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester