Avatar billede puppetmaster Nybegynder
19. april 2002 - 08:21 Der er 17 kommentarer og
1 løsning

Funktioner i VBA: en nemmere måde?

Jeg har 24 kontroller på min formular, som skal skifte farve, når de hhv. får focus og taber focus. Det er lidt omstændigt at lave funktioner for alle kontrollerne a la:

Private Sub Afkrydsningsfelt113_LostFocus()
  Afkrydsningsfelt113.BorderColor = 16777215
End Sub

Private Sub Afkrydsningsfelt35_GotFocus()
  Afkrydsningsfelt35.BorderColor = 65280
End Sub

Er der ikke en nemmere måde at gøre dette på?
Private Sub Afkrydsningsfelt113_LostFocus()
  SkiftFarve(me, Farve)
End Sub

Private Sub SkiftFarve(Kontrol As "et eller andet", Farve As Integer)
  Kontrol.BorderColor = Farve
End Sub

Noget der henad.....
Avatar billede puppetmaster Nybegynder
19. april 2002 - 08:25 #1
Eller
For Each Kontrol In KontrolArray Do
  GØR NOGET!
End For
Avatar billede proaccess Nybegynder
19. april 2002 - 08:26 #2
Du er SÅ tæt på...

Private Sub SkiftFarve(Kontrol As Control, Farve as Long)
  Kontrol.BorderColor=Farve
End Sub
Avatar billede puppetmaster Nybegynder
19. april 2002 - 08:27 #3
Kigger lige på det......brb
19. april 2002 - 08:42 #4
Den ALLER-nemmeste måde (synes jeg) er at lave din skift farve-procedure som en Funktion.

Public Functiom SkiftFarve(Kontrol As Control, Farve as Long)
  Kontrol.BorderColor=Farve
End Sub

Derved kan du markere alle kontrollerne samtidig og blot sætte egenskaben "VedFokus" til:
=SkiftFarve(Screen.Activecontrol;65280)

Hvis koden placeret i et modul og gøres public, så kan du genbruge koden på alle formularer, blot ved at sætte egenskaben som beskrevet ovenfor.

Dette duer selvfølgelig ikke, hvis du har anden kode på VedFokus (men det har man sjældent)

/Thomas
Avatar billede puppetmaster Nybegynder
19. april 2002 - 08:48 #5
Med det funktionskald, thomas, får jeg en fejl:
Compile error:
Expected: =
19. april 2002 - 08:52 #6
i hvilken linie??

Har du husket "=" foran SkiftFarve i egenskaben VedFokus?
Avatar billede puppetmaster Nybegynder
19. april 2002 - 08:53 #7
NOOOOO!!! :( :( :(
Avatar billede puppetmaster Nybegynder
19. april 2002 - 08:53 #8
Det havde jeg ikke! :(
Avatar billede puppetmaster Nybegynder
19. april 2002 - 08:58 #9
Skal lige have det på det rene:
med "sætte egenskaben 'VedFokus' til:" mener du IKKE i koden, men i egenskaberboksen, right?
(Jeg har placeret "farveskifterkoden" i et modul)
Jeg får den fejl, at Access ikke kan finde den funktion der refereres til i hændelsesegenskaben VedFokus
19. april 2002 - 08:59 #10
Har du husket at gøre den Public? Altså starte koden med: Public Functiom SkiftFarve(Kontrol .....
Avatar billede puppetmaster Nybegynder
19. april 2002 - 09:00 #11
Jep, koden er som du skrev den, bortset fra at du havde skrevet Functiom
Avatar billede proaccess Nybegynder
19. april 2002 - 09:01 #12
Dit modul må ikke hedde det samme som funktionen... (bare for en sikkerheds skyld)
Avatar billede puppetmaster Nybegynder
19. april 2002 - 09:03 #13
Ok, det gør den heller ikke (mere! :( )
Avatar billede puppetmaster Nybegynder
19. april 2002 - 09:05 #14
Jeg har ændret VedFokus/VedFokusVæk på 2 af kontrollerne. Når jeg flytter fokus mellem de 2 kontroller, skifter de ikke farve, men jeg får heller ikke en fejl på hændelserne. Det sker først når jeg flytter fokus til en af de andre kontroller!
Avatar billede puppetmaster Nybegynder
19. april 2002 - 09:08 #15
Fejlen når jeg flytter fokus til en af de "ikke-ændrede" kontroller:
"Der er en typeuoverensstemmelse"
Avatar billede puppetmaster Nybegynder
19. april 2002 - 09:10 #16
Egenskab for Afkrydsningsfelt113:
*********************************
VedFokus:    =SkiftFarve(Screen.Activecontrol;65280)
VedFokusVæk: =SkiftFarve(Screen.Activecontrol;16777215)

Modul Skift
***********
Option Compare Database

Public Function SkiftFarve(Kontrol As Control, Farve As Long)
  Kontrol.BorderColor = Farve
End Function
Avatar billede puppetmaster Nybegynder
19. april 2002 - 09:23 #17
Hmmm........det ser ud til at det har en betydning at mit afkrydsningsfelt "kommer fra" en Gruppeboks.....what to do?
Avatar billede puppetmaster Nybegynder
19. april 2002 - 09:25 #18
Hvis jeg opretter en ny formular og sætter en checkboks på og indstiller egenskaberne for VedFokus og VedFokusVæk, så virker din kode! (Vil dog gerne have den til at virke med en Gruppeboks også)
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