14. juni 2011 - 16:55Der 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.
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?
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.
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
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????
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.
Synes godt om
Ny brugerNybegynder
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.