Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Invoer van userform met enterkey  (gelezen 5756 keer)

0 leden en 1 gast bekijken dit topic.

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Invoer van userform met enterkey
« Gepost op: 28 januari 2018, 13:03:44 »
Hallo helpers en oplossers,

Ik zit met een, klein, probleem. ik heb een userform en heb daar een groot aantal invoervelden. nu wil dat ik in meer dan 80% van de invoer daarvan slechts de helft hoef te gebruiken. Dus bedacht ik dat als ik een enter zou kunnen geven in een bepaald veld waardoor de invoer naar de tabel wordt bewerkstelligt, ik heel blij zou worden. Immers minder de TAB toets gebruiken is voor deze natuurlijke luiaard het summum ;) Ik vond een stukje code wat voor mij heel goed werkt:

Private Sub TxtWacht_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = vbKeyReturn Then
             CmndInv_Click
        End If
   End Sub

Echter, ik wil deze code in feite toepassen op een andere invoerveld, omdat TxtWacht in feite in het minder dan 20% benodigde invoer ligt. dus bedacht ik dit
Private Sub TxtTijd_Keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode = vbKeyReturn Then
    CmndInv_Click
 End If
End Sub

Maar... Dit werkt niet omdat er gewerkt wordt met een ander stukje code op TxtTijd die maakt dat mijn invoer van "123" wordt omgezet naar 00:01:23 bij het verlaten van dit veld, en met enter verlaat ik het veld schijnbaar niet want de output is dan "3-5-1900 00:00:00". Nou zou ik natuurlijk mijn drang naar minder TAB'en kunnen relativeren en 1 TAB extra geven, maar daar wil ik op dit moment nog niet aan.

Voor de volledigheid geef ik ook nog even de code mee die er voor zorgt dat de tijdsnotatie wordt omgezet:
Private Sub txtTijd_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim xHour As String
Dim xMinute As String
Dim xWord As String

If TxtTijd.Text = "" Then Exit Sub

    xWord = Format(TxtTijd.Text, "0000")
    xHour = Left(xWord, 2)
    xMinute = Right(xWord, 2)

    TxtTijd.Text = TimeSerial(0, xHour, xMinute)

End Sub

Johan
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Invoer van userform met enterkey
« Reactie #1 Gepost op: 28 januari 2018, 14:33:28 »
Gezien ik ook een natuurlijke luiaard ben ;) post eens een gelijkend voorbeeld-bestandje waar het probleem zich voordoet, en wat je wilt bereiken.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.279
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Invoer van userform met enterkey
« Reactie #2 Gepost op: 28 januari 2018, 14:43:53 »
Mijn idee? Pas je TAB volgorde aan op de velden die je het meest gebruikt. Dan hoef je ook niets ingewikkelds af te gaan vangen. Een formulier "zomaar" op enter laten reageren vind ik persoonlijk nogal gevaarlijk. Want wát doet een gebruiker? Voor je het weet sla je een half ingevuld formulier op. En dan ben je in mijn ogen véél verder van huis.
______________________________

Groet, Leo

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Invoer van userform met enterkey
« Reactie #3 Gepost op: 28 januari 2018, 20:14:55 »
Gezien ik ook een natuurlijke luiaard ben ;) post eens een gelijkend voorbeeld-bestandje waar het probleem zich voordoet, en wat je wilt bereiken.

Dank voor je reactie Dotchiejack, Ik begrijp je vraag, echter is een voorbeeld bestand niet voorhanden. Het probleem zit hem niet in de sheet maar in de code, ik wil na de invoer van een bepaald vak gewoon op enter kunnen drukken ipv met de knop van de muis en dat werkt goed bij "TxtWacht" maar helaas niet bij "TxtTijd"

Mijn idee? Pas je TAB volgorde aan op de velden die je het meest gebruikt. Dan hoef je ook niets ingewikkelds af te gaan vangen. Een formulier "zomaar" op enter laten reageren vind ik persoonlijk nogal gevaarlijk. Want wát doet een gebruiker? Voor je het weet sla je een half ingevuld formulier op. En dan ben je in mijn ogen véél verder van huis.

Ook jij dank voor je reactie RedHead, Met de TAB volgorde is niets mis, en ik ben de enige gebruiker van het gebeuren en mocht ik te vroeg op enter hebben gedrukt is er ook nog een herstel knop ingebouwd in mijn routine ;) En de Enter komt inderdaad op ongeveer de helft van het formulier omdat, zoals in mijn eerste bijdrage vermeld, meer dan 80% van de invoer daar ook ophoudt.

Johan
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Invoer van userform met enterkey
« Reactie #4 Gepost op: 29 januari 2018, 08:32:08 »
Bij gebrek aan een voorbeeld.
Probeer
Plaats deze code in een gewone module.
Sub txtTijd
Dim xHour As String
Dim xMinute As String
Dim xWord As String
If TxtTijd.Text = "" Then Exit Sub
xWord = Format(TxtTijd.Text, "0000")
    xHour = Left(xWord, 2)
    xMinute = Right(xWord, 2)
TxtTijd.Text = TimeSerial(0, xHour, xMinute)
End sub
en volgende code in txtTijd knop.
Private Sub TxtTijd_Keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call txtTijd
 If KeyCode = vbKeyReturn Then
    CmndInv_Click
 End If
End Sub
Nota: volgende code behouden
Private Sub txtTijd_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim xHour As String
Dim xMinute As String
Dim xWord As String

If TxtTijd.Text = "" Then Exit Sub

    xWord = Format(TxtTijd.Text, "0000")
    xHour = Left(xWord, 2)
    xMinute = Right(xWord, 2)

    TxtTijd.Text = TimeSerial(0, xHour, xMinute)

End Sub

Offline Haije

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 201
  • Geslacht: Man
  • Oplossing.be
Re: Invoer van userform met enterkey
« Reactie #5 Gepost op: 29 januari 2018, 10:41:50 »
is het anders een idee om je userform uit twee pagina's te laten bestaan?
Op pagina 1 kun je dan alles kwijt wat onder die 80% valt, terwijl je op pagina 2 de resterende 20% terug laat komen.
Eens op pagina 2 aangekomen zou één keer enter er voor zorgen dat je doorgaat zonder die 20% in te hoeven voeren.
|-|aije

ik gebruik Office 2016 Professional Plus

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Invoer van userform met enterkey
« Reactie #6 Gepost op: 29 januari 2018, 12:59:39 »
Hoi Dotchiejack,

Heb je suggesties toegepast, maar werkt niet geheel naar behoren.

en volgende code in txtTijd knop.
Private Sub TxtTijd_Keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call txtTijd
 If KeyCode = vbKeyReturn Then
    CmndInv_Click
 End If
End Sub

Ik krijg dan de foutmelding: "Compileerfout: Ongeldig gebruik van een eigenschap" dit gebeurd ook als ik de Call doe binnen de If/End If. Dit gebeurd al gelijk als ik een cijfer in probeer te geven.

is het anders een idee om je userform uit twee pagina's te laten bestaan?
Op pagina 1 kun je dan alles kwijt wat onder die 80% valt, terwijl je op pagina 2 de resterende 20% terug laat komen.
Eens op pagina 2 aangekomen zou één keer enter er voor zorgen dat je doorgaat zonder die 20% in te hoeven voeren.

Dank je voor je inbreng Haije. Nee het is niet handig om er 2 pagina's van te gaan maken, dan is een keer een TAB geven toch sneller. het gedeelte wat die 20% is zijn kleine invoervelden voor een simpele letter om Inputboxen mee aan te roepen die dan bijvoorbeeld annuleringsvergoeding of correctiebedragen opvragen.
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Invoer van userform met enterkey
« Reactie #7 Gepost op: 29 januari 2018, 16:12:12 »
Hoi Dotchiejack,

Plaats deze code in een gewone module.
Sub txtTijd
Dim xHour As String
Dim xMinute As String
Dim xWord As String
If TxtTijd.Text = "" Then Exit Sub
xWord = Format(TxtTijd.Text, "0000")
    xHour = Left(xWord, 2)
    xMinute = Right(xWord, 2)
TxtTijd.Text = TimeSerial(0, xHour, xMinute)
End sub


Heel vreemd, maar toen ik deze Sub hernoemde naar txttijden en plaatsten in het userform, daarbij de aanroep aanpaste en binnen de If/ End If routine plaatste, deed hij precies wat hij doen moet :)

Hartelijk dank voor je hulp en suggestie, ik ben weer helemaal blij :D
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Invoer van userform met enterkey
« Reactie #8 Gepost op: 29 januari 2018, 16:32:23 »

Heel vreemd, .....

Ik denk niet dat het echt vreemd is. In de code werd bij Sub txtTijd de haakjes () vergeten na de Sub txtTijd.
Door de naam te veranderen in Sub txtTijden() zal je er automatisch de haakjes bijgeplaatst hebben.

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Invoer van userform met enterkey
« Reactie #9 Gepost op: 29 januari 2018, 16:37:52 »
Dank voor de terugkoppeling :thumbsup:
Jij blj, ikke blij ;D
Suc6
(denk in het vervolg op een gelijkend vb bestandje, heb je rapper een oplossing ;))

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Invoer van userform met enterkey
« Reactie #10 Gepost op: 29 januari 2018, 16:40:06 »
@ softaid, klopt de haakjes , mijn fout :-[

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Invoer van userform met enterkey
« Reactie #11 Gepost op: 29 januari 2018, 16:55:53 »
Ik denk niet dat het echt vreemd is. In de code werd bij Sub txtTijd de haakjes () vergeten na de Sub txtTijd.
Door de naam te veranderen in Sub txtTijden() zal je er automatisch de haakjes bijgeplaatst hebben.

:) SoftAid :)             

Dat klopt inderdaad ook, maar ook bij txttijd() ging het feest niet door en dat lag waarschijnlijk aan het feit dat er al een privatesub txttijd bestond.

Dank voor de terugkoppeling :thumbsup:
Jij blj, ikke blij ;D
Suc6
(denk in het vervolg op een gelijkend vb bestandje, heb je rapper een oplossing ;))

Ik maak constant gebruik van mijn gehele ouvre aan sub routines, ik ga niet constant, al dan niet met hulp van jullie oplossers, het wiel uitvinden natuurlijk ;)

Johan
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Invoer van userform met enterkey
« Reactie #12 Gepost op: 29 januari 2018, 17:41:46 »
aha,nu komt de aap uit de mouw.
Citaat
privatesub txttijd bestond.
:P

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Invoer van userform met enterkey
« Reactie #13 Gepost op: 30 januari 2018, 22:35:28 »
aha,nu komt de aap uit de mouw. :P

Heul klein aapje maar, ter vergelijken met een missende () :P
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

 


www.combell.com