Avatar billede bbkdk Seniormester
15. marts 2022 - 07:32 Der er 3 kommentarer og
2 løsninger

Sætte fokus for et kontrolelement

Jeg har forsøgt at programmere en lille lommeregner i Access. Det hele laves i en formular med indtastninger i VBA. Det skal tilføjes, at programmet er hentet fra en (gammel) bog om Visual Basic.

Når jeg klikker på tallene, der f.eks. skal lægges sammen, tilføjes de "txttalfelt".

Når hele tallet er tastet ind, skal nedenstående kode gemme det indtastede tal i "lbltal1".

Det sker ved at klikke på en knap, der kører følgende kode:

Private Sub cmdplus_Click()
lbltal1.Caption = txttalfelt.Text
txttalfelt.Text = " "
lblregneart.Caption = "plus"
End Sub

Men så får jeg følgende fejl:

"Du kan ikke referere til en metode eller en egenskab for et kontrolelement, hvis det ikke har fokus."

Er der nogen, der kan se, hvad der er galt med min kode. Eller er det en forskel i programmering mellem VBA og Visual Basic?
Avatar billede Thomas S Ekspert
15. marts 2022 - 07:59 #1
som udgangspunkt kan du ikke redigere en værdi af en textbox, hvis ikke den har focus - så du skal indsætte en linje inden din textfelt-manipulation:
...
txttalfelt.setfocus
txttalfelt.text = " "
...
Avatar billede Gustav Professor
15. marts 2022 - 08:00 #2
Egenskab Text virker ikke på denne måde i Access og kan kun bruges, når textboxen har fokus, og det har den ikke, når du klikker på en knap.
Brug i stedet Value:

Private Sub cmdplus_Click()

    lbltal1.Caption = txttalfelt.Value
    txttalfelt.Value = Null
    lblregneart.Caption = "plus"

End Sub
Avatar billede bbkdk Seniormester
15. marts 2022 - 08:32 #3
Tak til jer begge.

Jeg brugte Gustavs forslag, og det virkede perfekt.

Men der kommer så det næste problem, som sikkert vil dukke op flere gange i processen med at få lommeregneren til at virke:

Når jeg har klikket på "+"knappen, virker det. "lbltal1" sættes til det indtastede tal, og "lblregneart" sættes til f.eks. "plus".

Men når jeg så vil indtaste det næste tal (her tallet 5), hvor et klik udløser følgende kode:

Private Sub lbl5_Click()
txttalfelt.Text = txttalfelt.Text & "5"
End Sub

får jeg (selvfølgelig) den samme fejl som ovenfor.

Jeg burde kunne regne den korrekte kode ud, ud fra den første løsning, men hjernen er her åbenbart slået fra:
Avatar billede Gustav Professor
15. marts 2022 - 09:03 #4
Det er helt generelt, at Value skal bruges. Og brug Nz, da textboxen kan være tom.
Så:

Private Sub lbl5_Click()

    Me!txttalfelt.Value = Nz(Me!txttalfelt.Value) & "5"

End Sub
Avatar billede bbkdk Seniormester
15. marts 2022 - 17:59 #5
Det virker bare, så mange tak for hjælpen.

Nu vil jeg forsøge, om ikke jeg kan undgå af skulle klikke på "Beregn" knappen, for at få vist resultatet.

Hvis jeg ikke gør der ved hver mellemregning, arbejder den kun med de 2 sidst indtastede tal.
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

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





CIO
Stort CIO-interview: Lemvigh-Müllers milliard-omsætning er blevet digital