Dubbelklik in cel voor invoer "1"

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Mijn vraag
...
Ik wil in excel in bepaalde cellen door middel van een dubbel klik "1" invoeren.

Ik heb het werkend gekregen bij 1 cel. Maar wil dit voor meerdere of alle cellen.

Als het goed is heb ik een foto toegevoegd Afbeeldingslocatie: https://tweakers.net/i/0M840hmGBBQmeWS7eOSjL3MJSyE=/800x/filters:strip_icc():strip_exif()/f/image/9ZHDk4M7miLmdGb5voZkPViw.jpg?f=fotoalbum_large

Relevante software en hardware die ik gebruik
...
Windows 11, office 365
Wat ik al gevonden of geprobeerd heb
...zie vraag.

Beste antwoord (via Nilles111 op 28-05-2024 19:29)


  • Paul
  • Registratie: September 2000
  • Laatst online: 19:10
Wil je het nu op de hele sheet toepassen, of maar op bepaalde plekken? En ik zou sowieso een check inbouwen of de cel leeg is.

Je kunt door de code steppen om te zien wat er gebeurt en of het überhaupt uitgevoerd wordt, maar voor zoiets simpels gebruik ik vaak MsgBox'en.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox ("EventHandler")

    ' Zitten we in de goede range?
    If Intersect(Target, Range("A1:B20")) Is Nothing Then
        MsgBox ("No intersect")
        Exit Sub
    End If

    ' Is de cell leeg?
    If Not IsEmpty(Target.Cells(1, 1)) Then
        MsgBox ("Not Empty")
        Exit Sub
    End If

    ' Ziet er goed uit, gaan met de banaan
    MsgBox ("Empty")
    Target.Cells(1, 1).Value = 1
    Cancel = True
End Sub

Doet hier precies wat je lijkt te willen? Ik kan de Range op regel 5 aanpassen naar bijvoorbeeld "A:B" om de hele kolommen te nemen, of de hele If weglaten om het op de hele sheet toe te passen.

Ik gebruik Cells(1 ,1) omdat het me daadwerkelijk een keer gelukt is te dubbelklikken op een selectie :P Maar dat was zo random en lastig dat ik niet denk dat je dat als feature wil. En onthoud dat BeforeDoubleClick niet triggert als je dubbelklikt op de rand van een cell.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock

Alle reacties


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

De a1 aanpassen naar de juiste waarden (juiste bereik, en geselecteerde cel). Het helpt overigens als je niet een screenshot plaatst maar even de code zelf copypaste.

(knip, ik was blind)

[ Voor 18% gewijzigd door F_J_K op 25-05-2024 09:33 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Dank voor uw reactie, het lukt me nu niet om dat bereik werkend te krijgen. Wat ik probeerde is "a1:a10" . Maar ik zal vast iets niet goed doen. Maar als ik dit voor alle cellen in het blad wil doen, is dit dan ook mogelijk?

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Nilles111 schreef op zaterdag 25 mei 2024 @ 01:25:
het lukt me nu niet om dat bereik werkend te krijgen. Wat ik probeerde is "a1:a10" . Maar ik zal vast iets niet goed doen.
Probeer dit voor A1:A10 als je - zoals je schrijft - in die cellen via een dubbelklik een 1 wil invoeren:
code:
1
2
3
4
5
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A1:A10"), Target) Is Nothing Then
Target.Value = 1
End If
End Sub
Nilles111 schreef op zaterdag 25 mei 2024 @ 01:25:
Maar als ik dit voor alle cellen in het blad wil doen, is dit dan ook mogelijk?
Ja, maar ten zeerste af te raden. Wat heeft het voor zin om zoiets op miljoenen cellen toe te passen, terwijl je misschien maar een paar honderd cellen gebruikt?

[ Voor 5% gewijzigd door dix-neuf op 25-05-2024 08:33 ]


Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Snap dat dat inderdaad niet handig is zoals je het zo zegt, reden is dat ik het als het werkt uit wil breiden naar meerdere kolommen.

Bovenstaande code werkt (bij mij) niet helaas.

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Nilles111 schreef op zaterdag 25 mei 2024 @ 08:19:
reden is dat ik het als het werkt uit wil breiden naar meerdere kolommen.
Dat kan, en is ook geen enkel bezwaar.
Nilles111 schreef op zaterdag 25 mei 2024 @ 08:19:
Bovenstaande code werkt (bij mij) niet helaas.
Welke foutmelding krijg je dan?

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 22:24

Reptile209

- gers -

Nilles111 schreef op zaterdag 25 mei 2024 @ 01:25:
Dank voor uw reactie, het lukt me nu niet om dat bereik werkend te krijgen. Wat ik probeerde is "a1:a10" . Maar ik zal vast iets niet goed doen. Maar als ik dit voor alle cellen in het blad wil doen, is dit dan ook mogelijk?
Je kan gewoon de check op waar de dubbelclick plaatsvindt weglaten, dan doet hij het in het hele werkblad. Maar nadeel is wel dat als iemand dubbelklikt om een tekst of formule in het werkblad aan te passen, er opeens een 1 staat. Je gaat normaal, verwacht gedrag aanpassen. Dus probeer die check er in te laten en op een zo beperkt mogelijk gebied te houden.

Voor het oplossen van "het werkt niet":
Zet eens een breakpoint in je macro op regel 2 (klikken in de kantlijn, er verschijnt een rode balk over die regel). Als je dan de macro activeert met een dubbelklik, kan je met F8 stap voor stap de macro doorlopen en zien waarom het niet werkt. :)

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Ik krijg niet echt een foutmelding, maar er gebeurd niks als ik op een cel dubbel klik binnen het bereik.

Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 21:42

pistole

Frutter

Je krijgt geen foutmelding door de 'on error resume next'. Haal die er eens uit?

Daarnaast: je telt in je code 1 op bij de huidige waarde in plaats van dat je er een "1" inzet. Niets + 1 is niets, denk ik, dus krijg je... niets?

Ik frut, dus ik epibreer


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 19:10
Wil je het nu op de hele sheet toepassen, of maar op bepaalde plekken? En ik zou sowieso een check inbouwen of de cel leeg is.

Je kunt door de code steppen om te zien wat er gebeurt en of het überhaupt uitgevoerd wordt, maar voor zoiets simpels gebruik ik vaak MsgBox'en.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox ("EventHandler")

    ' Zitten we in de goede range?
    If Intersect(Target, Range("A1:B20")) Is Nothing Then
        MsgBox ("No intersect")
        Exit Sub
    End If

    ' Is de cell leeg?
    If Not IsEmpty(Target.Cells(1, 1)) Then
        MsgBox ("Not Empty")
        Exit Sub
    End If

    ' Ziet er goed uit, gaan met de banaan
    MsgBox ("Empty")
    Target.Cells(1, 1).Value = 1
    Cancel = True
End Sub

Doet hier precies wat je lijkt te willen? Ik kan de Range op regel 5 aanpassen naar bijvoorbeeld "A:B" om de hele kolommen te nemen, of de hele If weglaten om het op de hele sheet toe te passen.

Ik gebruik Cells(1 ,1) omdat het me daadwerkelijk een keer gelukt is te dubbelklikken op een selectie :P Maar dat was zo random en lastig dat ik niet denk dat je dat als feature wil. En onthoud dat BeforeDoubleClick niet triggert als je dubbelklikt op de rand van een cell.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Ik ga hem straks proberen. Hele blad is inderdaad nogal drastisch. Maar uiteindelijk wil ik meerdere bereiken. Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 19:10
"And" is je vriend :) En voor de leesbaarheid de underscore ook:
Visual Basic:
1
2
3
4
5
6
7
8
' Zitten we in de goede range?
If (Intersect(Target, Range("A1:B20")) Is Nothing) And _
   (Intersect(Target, Range("D1:E20")) Is Nothing) And _
   (Intersect(Target, Range("G1:H20")) Is Nothing) And _
   (Intersect(Target, Range("J1:K20")) Is Nothing) Then
    MsgBox ("No intersect")
    Exit Sub
End If

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Nilles111 schreef op zaterdag 25 mei 2024 @ 12:30:
Ik krijg niet echt een foutmelding, maar er gebeurd niks als ik op een cel dubbel klik binnen het bereik.
Dan moet je toch iets fout gedaan hebben.
De macro die ik plaatste doet het gewoon en doet het goed !

Acties:
  • +1 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Allemaal bedankt, voor de hulp, het is gelukt
Pagina: 1