Avatar billede tgl Nybegynder
14. juni 2011 - 16:55 Der er 7 kommentarer og
1 løsning

Genbruge makrokode på flere input-felter

Jeg har en dialogboks med flere felter hvor bruger bl.a. skal indtaste en numerisk værdi.

I en makro (modTjekNum) indtaster jeg en funktion som skal undersøge om bruger har indtastet et komma eller punktum. Hvis punktum skal det laves om til et komma og indtastede værdi gemmes derefter i ark.

Nu vil jeg gerne kunne kalde denne makro så jeg kan bruge den ved alle numeriske felter i dialogboksen.

Hvordan skal det kodes i VBA-editoren?
Avatar billede supertekst Ekspert
14. juni 2011 - 17:07 #1
Som en separat funktion - vis evt. din kode her
Avatar billede tgl Nybegynder
14. juni 2011 - 17:21 #2
Her en stub-koden:
-----------------------------------------------
public sub modTjekNum("parm=indtastede_værdi")
  ...her indtastes funktionens kode...
End sub

Hvordan kaldes den når jeg vælger et input-felt i VBA?
Avatar billede supertekst Ekspert
14. juni 2011 - 17:36 #3
Er input-feltet i en Userform?
Avatar billede tgl Nybegynder
14. juni 2011 - 17:47 #4
Ja, det er det.
Avatar billede enriko Nybegynder
15. juni 2011 - 00:34 #5
Du skal først i din kode linke til userform. Hvis din userform hedder userform1 , så skal du i din kode skrive Load userform1, eller show userform1 hvis du vil have den åbnet op. så er det bare med skrive variablen for din inputbox

Jeg er ikke ekspert i det , men jeg har også en lang kode der virker, det ligger bare på min arbejdspc.
Avatar billede supertekst Ekspert
15. juni 2011 - 08:41 #6
Rem Eksempel med 3 inputfelter, der kontrolleres fornumerisk værdi og
Rem udskifter evt punktum med komma.
Rem Hvis fejl makeres feltet med rød baggrund ellers hvid

Const hvid = &H80000005
Const rød = &HFF
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    checkFelt "TextBox1"
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    checkFelt "TextBox2"
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    checkFelt "TextBox3"
End Sub
Private Sub checkFelt(feltNavn)
Dim cc As Control
    Set cc = UserForm1.Controls(feltNavn)
    If IsNumeric(cc) = True Then
        cc = Replace(cc, ".", ",")
        cc.BackColor = hvid
    Else
        cc.BackColor = rød
    End If
End Sub
Avatar billede tgl Nybegynder
15. juni 2011 - 16:56 #7
Aha...

Kan nedenværende afgivede kode i svar
---------------------
Private Sub checkFelt(feltNavn)
Dim cc As Control
    Set cc = UserForm1.Controls(feltNavn)
    If IsNumeric(cc) = True Then
        cc = Replace(cc, ".", ",")
        cc.BackColor = hvid
    Else
        cc.BackColor = rød
    End If
End Sub
------------------------
oprettes som et klasse-modul og derefter kaldes ved tjek på tekstbox-1????
Avatar billede tgl Nybegynder
15. juni 2011 - 17:43 #8
Jeg har nu afprøvet superetekst' svar og det virker.

Lavede sub'en checkFelt(feltnavn) til Public, gemte den i et modul hvor sub'en efterfølgende kaldes ved validering af div. tekstfelter i min form.

Point er på vej.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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