Avatar billede Sigma Pi Juniormester
02. januar 2017 - 13:46 Der er 3 kommentarer og
1 løsning

VBA: Placer cursor i texbox, der hvor der klikkes med musen

Hej alle,
Jeg skal se, om jeg kan stille mit spørgsmål så kort, men stadig forståeligt.

Jeg har en userform, hvori der er en tekstboks. Når en bruger "tabber" eller klikker i den første gang, så skal den markere den grå hjælpetekst, der er deri, således brugeren kan skrive i tekstboksen i stedet.
Det har jeg løst sådan her:

Private Sub Attack1DescriptionTextBox_enter()
   
    With Attack1DescriptionTextBox
        .ForeColor = &H80000008
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
           
End Sub

Private Sub Attack1DescriptionTextBox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   
    With Attack1DescriptionTextBox
        .ForeColor = &H80000008
        .SelStart = 0
        .SelLength = Len(.Text)
    End With

End Sub

MEN ... Når der så er noget brugerdefineret input, så vil jeg gerne have, at userformen "bare" placerer cursoren der, hvor der klikkes med musen.
Den "behavior" har en tekstboks jo som standard, så jeg tænker det burde kunne lade sig gøre, spørgsmålet er bare hvordan?

Jeg har siddet og fiflet med nogle if/else konstruktioner, men jeg kan simpelthen ikke "knække koden" til, hvordan jeg får den til at "vende tilbage til" sin normale behavior, når først jeg har defineret den anden ovenfor.
Avatar billede kabbak Professor
02. januar 2017 - 15:11 #1
hvad med

Private Sub Attack1DescriptionTextBox_enter()

    With Attack1DescriptionTextBox
    If .Text <> "hjælpetekst" Then
        .ForeColor = &H80000008
        .SelStart = 0
        .SelLength = Len(.Text)
        End If
    End With
           
End Sub
Avatar billede Sigma Pi Juniormester
03. januar 2017 - 12:47 #2
Ja, tænkte godt det måske kunne bruges. Har bare ikke lige haft tid til at prøve det af. Men regner med at få kigget på det.

Så håber jeg bare, at den ligesom returnerer til sin standard behavior, hvis ikke den "hjælpetekst" står deri.

Men prøver det, så vender jeg lige tilbage :)
Avatar billede kabbak Professor
03. januar 2017 - 13:37 #3
det skal være

  If .Text = "hjælpetekst" Then
Avatar billede Sigma Pi Juniormester
04. januar 2017 - 07:48 #4
Hej igen,
Så fik jeg kigget på det. Men inden jeg fik taget dit forslag i brug, så fandt jeg faktisk frem til en anden løsning, der fungerer rigtig godt.
Så jeg har ikke fået prøvet din, men jeg markerer den alligevel som løsning :)

Min egen løsning blev:

If Attack1DescriptionTextBox.Text = "Attack #1" Then
   
With Attack1DescriptionTextBox
        .SelStart = 0
        .SelLength = Len(Attack1DescriptionTextBox.Text)
End With

Else
    Attack1DescriptionTextBox.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

End If
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