Avatar billede baadsager-e-box.dk Nybegynder
05. december 2002 - 13:28 Der er 5 kommentarer og
1 løsning

FejlBehandling

Hej

Jeg prøver at oprette en fejlbehandler, hvor man ud fra nogle bestemte (err) kan gøre forskellige ting for at tage højde for den fejl som VBA giver en. Mit problem er at jeg kun kan få denne fejl en gang i forløbet og jeg har brug for at få den mange gange.

Fejlbehandleren ser sådan ud:

FejlZone:
    Select Case Err
        Case 3021
        ActiveCell.Offset(0, 6).Value = 0
        ActiveCell.Offset(1, 0).Select
        GoTo NæsteVare
    End Select

Fejl 3021 står for at der ikke findes en aktuel post i databasen.

Er der nogen som kan hjælpe mig???
Avatar billede jkrons Professor
05. december 2002 - 14:43 #1
Hvad mener du med, at du kun kan få fejlen en gang?

Du kan vel indlægge en On Error Goto Fejlzone
alle de steder, hvor fejlen kan opstå.
Avatar billede sjap Praktikant
05. december 2002 - 16:48 #2
Så vidt jeg lige kan se, så vil programmet kun udføre sætningerne

      ActiveCell.Offset(0, 6).Value = 0
      ActiveCell.Offset(1, 0).Select
      GoTo NæsteVare

hvis fejlen er 3021. hvis der opstår andre fejl afsluttes programmet. Tilføj evt. en Resume Next efter select sætningen.
Avatar billede sjap Praktikant
05. december 2002 - 17:01 #3
Nu kan jeg jo ikke se, hvad det er du vil, men måske er det blot "GoTo NæsteVare" du skal placere udenfor "Select case"-sætningen.
Avatar billede jkrons Professor
05. december 2002 - 17:30 #4
Iøvrigt er det vel i overkanten med en Select Case, hvis der kun er en fejlmulighed, der skal selectes.
Avatar billede baadsager-e-box.dk Nybegynder
06. december 2002 - 07:42 #5
Jeg har selv løst det, se koden her.

Ja, det er i overkanten at bruge Select Casse på dette tidspunkt, men der er allerede kommet flere til.

Sub Intranetsek()
    Dim DB As Database
    Dim RS As Recordset
    Dim Tom As Long
   
'    Sheets("Dansk Prisliste").Select
'    Range("A1:F200").Select
'    Selection.Copy
'    Sheets("Intranet").Select
'    Range("A1").Select
'    ActiveSheet.Paste
'    Range("A2").Select
   
    Set DB = OpenDatabase("\\annika\db_okono\Access\priser.mdb")
    Set RS = DB.OpenRecordset("T-SekPris")
    Do Until Tom >= 20
        If checkdimssek(RS) Then
            Tom = Tom + 1
        Else
            Tom = 0
        End If
    Loop
End Sub


Function checkdimssek(OverfortRS As Recordset) As Boolean
    Dim ErTom As Boolean
    On Error GoTo FejlZone
    OverfortRS.MoveFirst
    If ActiveCell.Value = "" Then
        ActiveCell.Offset(1, 0).Select
        ErTom = True
    Else
        Do Until ActiveCell.Value = OverfortRS![Varenummer]
            OverfortRS.MoveNext
        Loop
        ActiveCell.Offset(0, 5).Value = OverfortRS![Salgspris]
        ActiveCell.Offset(1, 0).Select
        ErTom = False
    End If
GoTo EndOfFunction
FejlZone:
    Select Case Err
        Case 3021
        ActiveCell.Offset(0, 5).Value = 0
        ActiveCell.Offset(1, 0).Select
        OverfortRS.MoveFirst
        Err.Clear
        ErTom = False
    End Select
EndOfFunction:
    checkdimssek = ErTom
End Function
Avatar billede sjap Praktikant
09. december 2002 - 11:38 #6
Så vidt jeg kan se, er der da stadig kun én Case under Select Case sætningen.
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