Avatar billede tvc Seniormester
17. september 2006 - 20:27 Der er 10 kommentarer og
1 løsning

Function i VBA - find månednavn med udgangspunkt i et tal

Hej

Jeg har fået denne til at virke, men pludselig vil den ikke fungere. Er der en der kan hjælpe med med en forklaring og løsning.

----------------------

Public Function FindMonth(FMonth As String) As String

Select Case FMonth

    Case 1
        FindMonth = "January"
    Case 2
        FindMonth = "February"
    Case 3
        FindMonth = "March"
    Case 4
        FindMonth = "April"
    Case 5
        FindMonth = "May"
    Case 6
        FindMonth = "June"
    Case 7
        FindMonth = "July"
    Case 8
        FindMonth = "August"
    Case 9
        FindMonth = "September"
    Case 10
        FindMonth = "October"
    Case 11
        FindMonth = "November"
    Case 12
        FindMonth = "December"
    Case Else
        FindMonth = "Error"

End Select

End Function

--------------------

MVH TVC
Avatar billede kabbak Professor
17. september 2006 - 20:47 #1
Public Function FindMonth(FMonth As String) As String

Select Case Month(FMonth)

    Case 1
        FindMonth = "January"
    Case 2
        FindMonth = "February"
    Case 3
        FindMonth = "March"
    Case 4
        FindMonth = "April"
    Case 5
        FindMonth = "May"
    Case 6
        FindMonth = "June"
    Case 7
        FindMonth = "July"
    Case 8
        FindMonth = "August"
    Case 9
        FindMonth = "September"
    Case 10
        FindMonth = "October"
    Case 11
        FindMonth = "November"
    Case 12
        FindMonth = "December"
    Case Else
        FindMonth = "Error"

End Select

End Function
Avatar billede svla Mester
17. september 2006 - 20:50 #2
Hej!
Prøv denne her, den bruger jeg når der klikkes på et menupunkt hvor der startes en VBA-form. Makroen herunder sørger for at formen kun startes hvis det aktive ark har et månedsnavn.
Makroen bevirker at resten af makroen som ligger efter kun afspilles hvis det er et månedsark.
Makroen stoppes når CACE Else afspilles.

Public Function Indtastning()
Dim sArkNavn As String
  sArkNavn = ActiveSheet.Name
     
Select Case sArkNavn
  Case "Januar"
 
  Case "Februar"
 
  Case "Marts"
 
  Case "April"
 
  Case "Maj"
 
  Case "Juni"
 
  Case "Juli"
 
  Case "August"
 
  Case "September"
 
  Case "Oktober"
 
  Case "November"
 
  Case "December"
       
  Case Else  'Andre arknavne
    MsgBox "Menuen < NY INDTASTNING > kan ikke aktiveres på dette ark"
    End
  End Select
Avatar billede kabbak Professor
17. september 2006 - 20:51 #3
jeg går ud fra at FMonth er en dato
Avatar billede kabbak Professor
17. september 2006 - 20:55 #4
Hvis det er et tal, og kun et tal mellem 1 og 12, så er der 2 muligheder.
enten
Public Function FindMonth(FMonth As Integer) As String



eller lidt mere rettelse, der skal "" omkring tallene

Case "1"
        FindMonth = "January"
    Case "2"
        FindMonth = "February"
'  o. s. v.
Avatar billede tvc Seniormester
17. september 2006 - 21:10 #5
Hej

Jeg har forsøgt at rette min funktion til efter kabbaks anvisninger med jeg får den stadig ikke til at fungere.

Hvad kan der være galt?

Den har virket i mit ark men så ville den pludselig ikke. Skal den ligge under arket eller må den godt ligge i et modul?

Den ser således ud p.t.



Option Explicit

Public Function FindMonth(FMonth As Integer) As String


Select Case FMonth

    Case "1"
        FindMonth = "January"
    Case "2"
        FindMonth = "February"
    Case "3"
        FindMonth = "March"
    Case "4"
        FindMonth = "April"
    Case "5"
        FindMonth = "May"
    Case "6"
        FindMonth = "June"
    Case "7"
        FindMonth = "July"
    Case "8"
        FindMonth = "August"
    Case "9"
        FindMonth = "September"
    Case "10"
        FindMonth = "October"
    Case "11"
        FindMonth = "November"
    Case "12"
        FindMonth = "December"
    Case Else
        FindMonth = "Error"

End Select

End Function
Avatar billede kabbak Professor
17. september 2006 - 21:28 #6
Nu har du jo også lavet begge rettelser på en gang, det var enten /eller


Public Function FindMonth(FMonth As String) As String
' Hvis det er string, er det tekst, så skal det være Case "1"
' hvis det er Integer er det heltal og så skal det være Case 1

Select Case FMonth

    Case "1"
        FindMonth = "January"
    Case "2"
        FindMonth = "February"
    Case "3"
        FindMonth = "March"
    Case "4"
        FindMonth = "April"
    Case "5"
        FindMonth = "May"
    Case "6"
        FindMonth = "June"
    Case "7"
        FindMonth = "July"
    Case "8"
        FindMonth = "August"
    Case "9"
        FindMonth = "September"
    Case "10"
        FindMonth = "October"
    Case "11"
        FindMonth = "November"
    Case "12"
        FindMonth = "December"
    Case Else
        FindMonth = "Error"

End Select

End Function
Avatar billede tvc Seniormester
17. september 2006 - 21:41 #7
Den siger fortsat "Ugyldigt navn" i cellen.
Avatar billede kabbak Professor
17. september 2006 - 21:51 #8
Funktioner skal ligge i et modul, ikke i ark eller Thisworkbook muduler
Avatar billede tvc Seniormester
17. september 2006 - 22:06 #9
Nu virker den såvel med Integer som String.

Den har hele tiden været i et Modul.

Jeg har ikke fået fortalt, at FMonth henviser til en celle i arket. Jeg har derfor også tidligere forsøgt med FindMonth(FMonth as Range) og det virker ligeledes.

Nu håber jeg den vil virke fortsat ;-)

Kabbak du skal have tak for hjælpen og du skal have dine point for at hjælpe. Smider du et svar?

Sådan kommer den nok til at se ud, når jeg følger dit råd ;-)

Public Function FindMonth(FMonth As Integer) As String

Select Case FMonth

    Case 1
        FindMonth = "January"
    Case 2
        FindMonth = "February"
    Case 3
        FindMonth = "March"
    Case 4
        FindMonth = "April"
    Case 5
        FindMonth = "May"
    Case 6
        FindMonth = "June"
    Case 7
        FindMonth = "July"
    Case 8
        FindMonth = "August"
    Case 9
        FindMonth = "September"
    Case 10
        FindMonth = "October"
    Case 11
        FindMonth = "November"
    Case 12
        FindMonth = "December"
    Case Else
        FindMonth = "Error"

End Select

End Function
Avatar billede kabbak Professor
17. september 2006 - 22:22 #10
et svar ;-))
Avatar billede kabbak Professor
17. september 2006 - 23:33 #11
Hvis du ikke gør noget speciel kan du bruge en indbygger funktion.

Hvis du skriver månedens nummer i A1, så kan du bruge

=DATO(2006;A1;1)
eller engelsk
=DATE(2006;A1;1)

og formater cellen brugerdefineret med mmmm
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