TakeFocusOnClick bij Opdrachtknop True/False

Status
Niet open voor verdere reacties.

joost1

Gebruiker
Lid geworden
30 mrt 2008
Berichten
167
Ik heb een vrij groot bestand met daarin een werkblad met knoppen welke diverse sub's aansturen.
Toen ik per ongeluk twee maal op de naam van het werkblad klikte en vervolgens op een opdrachtknop klikte voor het uitvoeren van een sub liep deze betreffende sub vast. Daarna diverse malen dit bewust gedaan en de sub bleef vast lopen. Echter door geen focus op de naam van het blad te hebben gebeurt dit niet .
Ik heb dit denk ik kunnen oplossen door in de eigenschappen van de opdrachtknop 'TakeFocusOnClick' op false te zetten. Ik heb hierop het nodige zoekwerk verricht , maar kan niet goed achterhalen wat 'TakeFocusOnClick ' bij een Opdrachtknop ( Active-X besturingselement ) nu precies doet.
Maar aangezien ik niet weer wat er precies achter 'TakeFocusOnClick ' schuil gaat vraag ik me af of ik het wel opgelost heb.
Heeft iemand een idee waar ik wat praktische informatie hierover kan vinden?
 
Wanneer je op een knop klikt is dit meteen het actieve object.
Als je TakeFocusOnClick van die knop uit zet wordt de focus niet op de knop gezet maar blijft dan staan op het huidig actieve object.
 
In mijn geval stond 'Naam wijzigen' van het werkblad actief . Door nu op de knop te drukken had ik het idee dat daardoor 'Naam wijzigen' ongedaan gemaakt zou worden en de sub uitgevoerd kon worden.
Nu TakeFocusOnClick uitstaat gaat word 'Naam wijzigen' ook ongedaan gemaakt en wordt de sub goed uitgevoerd.
Blijkbaar is er toch nog iets anders actief waar ik naar op zoek moet en waar ik door TakeFocusOnClick uit te zetten geen last meer van heb.
 
Eigenschappen van de knop.
Takefocusonclick aanklikken en F1 drukken.
 
edmoor , HSV

Bedankt voor jullie reacties.
Ik ben weer wat wijzer geworden betreffende 'TakeFocusOnclick' bij een opdrachtknop.
Het probleempje is dan wel opgelost door 'TakeFocusOnclick' uit te zetten, maar de echte oorzaak is me nog niet echt duidelijk.
Bij de andere knoppen in het bestand doet het fenomeen zich namelijk niet voor. Ik zal daarom nog maar eens kritisch kijken naar de bewuste module.
 
Plaats dan eens een documentje waarin dat probleem zich voordoet.
 
Dat had ik willen doen. Ik had nl een testbestandje gemaakt omdat het bestand waarin zich het voordoet te groot en vertrouwelijke informatie bevat.
Echter in het testbestandje deed zich het fenomeen zich niet voor.
Dus ik had graag een bestandje willen bijsluiten met het fenomeen Ik zal nog wel eens een nieuwe poging wagen en mocht het lukken dan kom er wel op terug.
 
Toch nog een poging gewaagd om een bestandje te maken waarin het fenomeen zich voordoet.
In het bijgesloten bestandje doet zich het fenomeen voor.
In 'Werkblad2" is een knop geplaatst die een macro aanstuurt die in 'Werkblad1' de namen van de werkbladen neerzet.
Normaal gesproken gaat dit goed.
Maar als je vervolgens terug gaat naar 'Werkblad2" en je kiest voor 'Naam wijzigen' van het tabblad en dan vervolgens op de knop drukt dan komt er een foutmelding. Dit is natuurlijk niet bepaald een normale werkwijze, maar doordat ik deze handelswijze per ongeluk deed door een dubbelklik in het oorspronkelijke bestand kwam er er een foutmelding die ik niet goed kon thuisbrengen.
 

Bijlagen

  • Testbestandje.xlsm
    24,2 KB · Weergaven: 30
Ik heb het nu denk ik opgelost door de volgende VBA code bovenaan in de module te zetten:

SendKeys "{ESC}"
DoEvents
 
Ik zou de focus even terugbrengen naar het werkblad.

Code:
Sub Knop()
Dim t As Long, j As Long
  Application.ScreenUpdating = False
  Cells(1).Activate
  With Sheets("Werkblad1")
    .Cells(1).CurrentRegion.ClearContents
    t = Sheets.Count
    ReDim ar(1 To t, 1)
      For j = 1 To t
        ar(j, 0) = j
        ar(j, 1) = Sheets(j).Name
      Next j
    .Cells(1).Resize(t, 2) = ar
    Application.Goto .Cells(1)
  End With
End Sub
 
Laatst bewerkt:
VenA,

Bedankt voor je bericht.
Ik heb je code gekopieerd, maar die werkte niet. Echter niet erg.

Op basis van je code heb ik er het volgende van gemaakt in het voorbeeld bestandje waarbij door 'Cells(1).Activate' de focus wordt verplaatst van het tabblad naar het werkblad om het maar zo te zeggen en het fenomeen waar ik min of meer toevallig tegen aan ben gelopen wordt teniet gedaan.
Nu had ik ook een oplossing door 'TakeFocusOnClick' van de knop uit te zetten. Maar daarvan begrijp ik nog steeds niet goed waarom dat dat ook een oplossing is. Ik had zo gedacht met 'TakeFocusOnClick' aan, dat dan ook de focus verplaatst wordt bij een klik.

Code:
Sub Knop()

Dim i As Integer
Dim t As Integer

Application.ScreenUpdating = False

'SendKeys "{ESC}"
'DoEvents

Cells(1).Activate

With Sheets("Werkblad1")
            .Cells(1).CurrentRegion.ClearContents
        
        t = Sheets.Count
        For i = 1 To t
                    .Cells(i, 1) = i
                    .Cells(i, 2) = Sheets(i).Name
        Next i

            .Application.Goto Sheets(1).Cells(1)

End With
Application.ScreenUpdating = True
End Sub
 
Werkt bij mij prima. Zowel bij een cel in de Edit modus <F2> als bij een tabnaam die in de edit modus staat. Dus wat nu het het probleem is ontgaat mij even.
 
De code in #8 werkt prima na het wijzigen van werkblad2 in een andere naam.

Begrijp je probleem niet.
Of wijzig je de naam van werkblad1 ? (dan is het nogal wiedes).
 
Blijkbaar had ik het niet goed gekopieerd.

Het gaat om Cells(1).Activate in de code. Als je deze weglaat is er probleem als de tabnaam in de edit modus staat. Dat was mijn probleem.
Door Cells(1).Activate wordt het probleem ondervangen en dan is er geen probleem. Dus de oplossing voor mijn probleem is om Cells(1).Activate aan de code toe te voegen.
 
VenA

Ik had Uw code gekopieerd, maar die werkte in eerste instantie niet . Na de opmerking van HSV nogmaals gekopieerd en werkte toen wel. Dus vandaar mijn opmerking dat ik Uw code mogelijk niet goed gekopieerd had.
 
In plaats van:

Code:
Application.OnWindow = -1
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan