Avatar billede daniel_d Nybegynder
28. februar 2005 - 15:38 Der er 14 kommentarer og
1 løsning

overføre Gruppeboks værdier til funktion

Hej

Jeg har problemer med en gruppeboks bestående af 5 alternativknapper

Jeg vil gerne overføre de værdier den enkelte alternativknap har til en anden funktion, men det er netop problemet - værdien kommer ikke med - der kommer ingen fejl når jeg debugger.

Gruppeboksen:

Public Sub Ramme712_BeforeUpdate(Cancel As Integer)
    Dim strTekst

    Select Case Me.Ramme712.Value
        Case 1
            strTekst = "BlaBla1"
        Case 2
            strTekst = "BlaBla2"
        Case 3
            strTekst = "BlaBla3"
        Case 4
            strTekst = "BlaBla4"
        Case 5
            strTekst = "BlaBla5"
    End Select
End Sub
Avatar billede daniel_d Nybegynder
28. februar 2005 - 15:39 #1
Jeg har forsøgt at kalde værdien fra gruppeboksen med

strTekst i en funktion
28. februar 2005 - 15:43 #2
Men som du gør i din Public Sub Ramme712_BeforeUpdate, så gemmes værdien (f.eks. "blabla1") jo bare i strTekst, som så "løber ud i sandet", da proceduren afsluttes.

Hvis det virkelig skal være en funktion, skal den se således ud:

Public Function Getgruppeværdi(ctrl as control) as String
    Select Case Ctrl
        Case 1
            Getgruppeværdi= "BlaBla1"
        Case 2
            Getgruppeværdi= "BlaBla2"
        Case 3
            Getgruppeværdi= "BlaBla3"
        Case 4
            Getgruppeværdi= "BlaBla4"
        Case 5
            Getgruppeværdi= "BlaBla5"
    End Select
End Function


Denne funktion kan lægges i et modul eller i formularen.

Herefter fanger du resultatet således i VBA:

Getgruppeværdi(Me!Ramme712)

Hvis det er en i forespørgsel, at du vil brge den, så skal det være således:

Getgruppeværdi(Forms!DinFormular!Ramme712)

Jeg håber, at det er forståeligt!?
Avatar billede daniel_d Nybegynder
28. februar 2005 - 15:50 #3
Men kan jeg bare lave min Public sub om til en function sådan uden videre?
28. februar 2005 - 15:53 #4
ja, men jeg ville nu bare slette sub'en og så lave funktionen i stedet.

Ideen er, at der ikke sker noget før du kalder Getgruppeværdi et eller andet sted fra. Først når du kalder den funktion, så hentes/aflæses værdien.
Avatar billede daniel_d Nybegynder
28. februar 2005 - 15:58 #5
Men er case 1 hvor 1 så er så navnet på den option man vælger?
... jeg er lidt ny i det så beklagere hvis det er elementært
28. februar 2005 - 16:01 #6
Du skal skam ikke beklage - det her er ikke elemtært (med mindre man ved det ;o)

ja, hvis den første option har "indstillingsværdien" 1 i egenskaberne så vil case 1 angive hvilken tekst der vil retuneres når brugeren har valgt 1.

Hvor skal du bruge teksterne (blabla1 osv)?
Avatar billede daniel_d Nybegynder
28. februar 2005 - 16:02 #7
Det jeg ikke helt fatter er hvordan funktionens case 1 bliver registreret som markeret eller valgt, for så skal der vel være en sammenhæng mellem den og min gruppeboks???
Avatar billede daniel_d Nybegynder
28. februar 2005 - 16:03 #8
ok, jeg prøver lige...
28. februar 2005 - 16:05 #9
Hvis det er mere forståeligt, kan du lave funktionene om til dette:

Public Function Getgruppeværdi() as String
    Select Case Forms!DinFormular!Ramme712
        Case 1
            Getgruppeværdi= "BlaBla1"
        Case 2
            Getgruppeværdi= "BlaBla2"
        Case 3
            Getgruppeværdi= "BlaBla3"
        Case 4
            Getgruppeværdi= "BlaBla4"
        Case 5
            Getgruppeværdi= "BlaBla5"
    End Select
End Function


Når du kalder funktionen skal du så bare skrive således:

Getgruppeværdi()
Avatar billede daniel_d Nybegynder
28. februar 2005 - 16:10 #10
Jeg får en compile error nu i den linie hvor jeg kalder GetGroupValue, men på et sted jeg ikke før fik compile error...

Ellers tror jeg det er tæt på :)

Smider lige hele koden for de relevante funktioner


Function CreateAppointment()
    Dim objNewAppt As AppointmentItem, StartTid
   
    StartTid = Me!Normal_reminder & " " & Time
   
    If golApp Is Nothing Then
        If InitializeOutlook = False Then
            MsgBox "Unable to initialize Outlook. "
            Exit Function
        End If
    End If
   
    Set objNewAppt = golApp.CreateItem(olAppointmentItem)
    With objNewAppt
        .Categories = "Business; Key Customer"
        .Start = StartTid
        .End = DateAdd("h", 0, .Start)
        '.Recipients.Add Me!Email
        .Subject = "Følge op på sag: " & "Vedr: " & Me!Sag_nr & GetGroupValue
        .Body = "Følgende sag skal følges op på i dag: " & vbCrLf & "Sagsnummer: " & Me!Sag_nr & vbCrLf & "Køber 1 navn: " & Me!K_1_navn & vbCrLf & "Telefonnummer: " & Me!K_tlf_nr
        .Save
        .Display
    End With
   
    Me!Normal_reminder = ""
    Me!Normal_vedr = ""
   
End Function

Public Function GetGroupValue(ctrl As Control) As String
    Select Case ctrl
        Case 1
            GetGroupValue = "BlaBla1"
        Case 2
            GetGroupValue = "BlaBla2"
        Case 3
            GetGroupValue = "BlaBla3"
        Case 4
            GetGroupValue = "BlaBla4"
        Case 5
            GetGroupValue = "BlaBla5"
    End Select
End Function
Avatar billede daniel_d Nybegynder
28. februar 2005 - 16:10 #11
Linien jeg får fejl i er: .Subject = "Følge op på sag: " & "Vedr: " & Me!Sag_nr & GetGroupValue

hvor den markerer !Sag_nr
Avatar billede daniel_d Nybegynder
28. februar 2005 - 16:15 #12
Den fejler helt præcis med:
Compile error
Argument not optional
28. februar 2005 - 16:18 #13
Kaldet skal se således ud:
.Subject = "Følge op på sag: " & "Vedr: " & Me!Sag_nr & GetGroupValue(Me!Ramme712)

Ligger begge funktioner på formularen?
Avatar billede daniel_d Nybegynder
28. februar 2005 - 16:21 #14
begge funktioner er på rammen...
Men du havde ret i kaldet...
GetGroupValue(Me!Ramme712) var det der fik det til at køre som smurt :)

Tak for hjælpen
28. februar 2005 - 16:22 #15
Super :o)

Og tak :)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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