Avatar billede jokerper Nybegynder
11. marts 2010 - 02:12 Der er 6 kommentarer og
1 løsning

VBA hjælp - error handling

Hejsa eksperter

Jeg har et "lille" problem, jeg ved ikke præcist hvordan jeg skal takle dette.

Private Sub Workbook_Open()
On Error GoTo ErrHandler:
Call koden

ErrorHandle:
exit sub
End sub

Nu er det sådan at jeg vil slette koden - "koden" efter Workbook_Open første gang den åbnes.

Derfor har jeg brug for at den ikke melder fejl, når workbooken åbnes næste gang og ikke kan finde call koden.

Hvordan kan jeg gøre dette?
Avatar billede jokerper Nybegynder
11. marts 2010 - 07:50 #1
Jeg tror nu jeg klarede det ved at bruge run kommandoen i stedet for.
Avatar billede kabbak Professor
11. marts 2010 - 11:14 #2
Slet koden 'Workbook_Open()' også
Avatar billede kabbak Professor
11. marts 2010 - 11:26 #3
Du har denne kode i ThisWorkbook modulet

Private Sub Workbook_Open()
On Error GoTo ErrHandler:
Call koden

ErrorHandle:
exit sub
End sub


Her er en måde at slette kode på, sæt den i Module1

Public Sub koden()
' din nuværende Kode
Call DeleteCode
End Sub
Sub DeleteCode()

''Needs Reference Set To _

  '  "Microsoft Visual Basic For Applications Extensibility"

'Tools>References.
       
    With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
            .DeleteLines 1, .CountOfLines
    End With

    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
            .DeleteLines 1, .CountOfLines
    End With
                               

End Sub


det vil sige koden kører 1 gang og sletter så sig selv
Avatar billede jokerper Nybegynder
11. marts 2010 - 11:39 #4
Hej kabbak

Det vil også slette min beforeclose kode, ik´?

Det skal den nemlig ikke, kan du evt. lige sætte lidt kommentarer i koden så jeg kan forstå hvad der sker.

Det jeg vil forsøge er at lave noget sikkerhed således at det kun kan åbnes på een computer ved at huske hvor det er installeret, og slette muligheden for at ændre min sub koden herefter ved at slette sub koden.

Håber det er forståeligt?

Jeg har til en vis grænse løst det men for at undgå fejl meddelelser, kunne det være godt at se lidt andre muligheder.
Avatar billede kabbak Professor
11. marts 2010 - 11:48 #5
OK, jeg prøver at forklare

Sub DeleteCode()

''Needs Reference Set To _

  '  "Microsoft Visual Basic For Applications Extensibility"

'Tools>References.
     
    With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
            .DeleteLines 3' sletter KUN linje 3 i ThisWorkbookmodulet
    End With

    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
            .DeleteLines 1, .CountOfLines' sletter alle linjer i Module1
    End With
                             

End Sub
Avatar billede jokerper Nybegynder
12. marts 2010 - 17:08 #6
Okay tak, kabbak -> Den var sku´godt nok lidt svær at få til at spille rigtigt.


Men kan få excel til automatisk at vælge/indlæse referencer?

''Needs Reference Set To _

  '  "Microsoft Visual Basic For Applications Extensibility"

'Tools>References.

Lægger du et svar, så godkender jeg det.
Avatar billede jokerper Nybegynder
12. marts 2010 - 19:15 #7
Et eks. jeg syntes ikke det er alle pc´er som fx kan genkende denne kommando

Textbox1.value = Date

Mens det virker på andre
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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