Avatar billede palle_ib Nybegynder
19. februar 2003 - 13:00 Der er 8 kommentarer og
1 løsning

Macro - ChDir

Jeg kan kun får kaldet ChDir til at virke første gang jeg køre en macro efter Excel er blevet startet.
Jeg bruger den i forfindelse med følgende kode og når programmet så kører anden gang og den skal bælge et andet bibliotek så virkre det nogle gange!
Mangler der et kald for at få Application.GetOpenFilename boxen til at registrere at den også anden gang skal kigge i et andet bibliotek?

Public Function sFindFile(Optional ByVal sSti As String) As String
  If sSti <> "" Then If Dir(sSti, vbDirectory) <> "" Then ChDir sSti
  'If Dir(sSti, vbDirectory) <> "" Then ChDir sSti
  sFindFile = Application.GetOpenFilename
  If sFindFile = "False" Then
      If MsgBox("Der blev ikke valgt nogen fil. Vil du prøve igen?", vbYesNo) = "6" Then
        sFindFile = Application.GetOpenFilename
        If sFindFile = "False" Then
            MsgBox ("Der blev ikke valgt nogen fil, derfor afbrydes programmet!")
            Exit Function
        End If
        Exit Function
      End If
      Exit Function
  End If
End Function
Avatar billede sjap Praktikant
19. februar 2003 - 16:50 #1
Prøv at rette

    If sFindFile = "False" Then

til

    If sFindFile = False Then

begge steder. Alternativt kan du skrive

    If Not sFindFile Then
Avatar billede sjap Praktikant
19. februar 2003 - 16:52 #2
Hvis overstående er hele funktionen, tjener de 3 x "Exit Function" ikke noget formål, så dem kan du godt slette.
Avatar billede sjap Praktikant
19. februar 2003 - 17:17 #3
Strengt taget kunne du også ændre

Public Function sFindFile(Optional ByVal sSti As String) As String

til

Public Function sFindFile(Optional ByVal sSti As String) As Variant

da resultatet jo både kan være String og Boolean.
Avatar billede palle_ib Nybegynder
21. februar 2003 - 09:08 #4
Mange tak for dine råd, men du besvarer ikke spørgsmålet!
Hvorfor virker ChDir kun første gang efter Excel er blevet åbnet?
Avatar billede palle_ib Nybegynder
21. februar 2003 - 09:24 #5
Det virker ikke helt efter hensigten hvis du indsætter en Not validering på en string eller rettere sagt en sti og fil henvisning så får du en fejl 13. Så den med not virker ikke helt!
Avatar billede sjap Praktikant
21. februar 2003 - 11:08 #6
Det er ikke fordi jeg forsøger at undgå dit spørgsmål. Jeg havde sådan set håbet at mit første svar, var en besvarelse af dit spørgsmål. Det kan jeg så forstå ikke er tilfældet.

Not skulle vel virke, hvis de laver funktionen om til Variant.
21. februar 2003 - 11:15 #7
Jeg har ingen problemer således her:

Sub Testing()
    FindFile "C:\My Documents\Development\TechnicalSalesTools\Development\"
    FindFile "C:\My Documents\Development\TechnicalSalesTools\"
    FindFile "C:\My Documents\Development\"
    FindFile "C:\My Documents\Development\TechnicalSalesTools\Development\"
    FindFile "C:\My Documents\Development\TechnicalSalesTools\"
    FindFile "C:\My Documents\Development\"
End Sub

Public Function FindFile(Optional ByVal sSti As String) As String
    Dim sRetVal As String
   
    If sSti <> "" Then
        If Dir(sSti, vbDirectory) <> "" Then
            ChDir sSti
        End If
    End If
   
    sRetVal = Application.GetOpenFilename
   
    If Not (CBool(sRetVal)) Then
       
        If MsgBox("Der blev ikke valgt nogen fil. Vil du prøve igen?", vbYesNo) = vbYes Then
          sRetVal = Application.GetOpenFilename
         
          If Not (CBool(sRetVal)) Then
              MsgBox ("Der blev ikke valgt nogen fil, derfor afbrydes programmet!")
              GoTo FoundNothing
          End If
         
          GoTo FoundNothing
        End If
       
        GoTo FoundNothing
    End If
   
    GoTo Finito
   
FoundNothing:
    sRetVal = ""

Finito:
    FindFile = sRetVal
End Function
Avatar billede palle_ib Nybegynder
28. februar 2003 - 15:13 #8
Ja, det virker fordi du ikke skifter drev. Så det jeg egentlig gerne ville have spurgt om hvorfor virker ChDir ikke når man skifter drev?
Avatar billede palle_ib Nybegynder
14. marts 2003 - 13:52 #9
Spørgsmålet lukkes - da ingen har svaret
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