• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro starten met enter

  • Onderwerp starter Onderwerp starter HMDH
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HMDH

Gebruiker
Lid geworden
11 jun 2010
Berichten
183
Beste forum,

Kan je met een VBA code er voor zorgen dat er een macro wordt gestart als je op een enkele cel entert?
Nu heb ik nog een aparte button waarop ik moet klikken om de macro te starten.

Met een lijst in valideren is het te omslachtig.
(Werk uiteraard wel maar niet zoals ik het zou willen.)

Dus; ik voed een cel met b.v. het getal "5" dan moet de macro starten.

Code:
Sub KeuzeBon()
Sheets("Wedstrijdbonnen").Select

'Geselecteerde bonnen zichtbaar en onzichtbaar maken.

ActiveSheet.Unprotect

If Range("D15").Value = 5 Then Columns("G:BY").Hidden = True
If Range("D15").Value = 5 Then Columns("AE:AI").Hidden = False

ActiveSheet.Protect

End Sub
 
Laatst bewerkt door een moderator:
Plaats code tussen code tags. Het kan met onderstaande code in de module van het betreffende blad.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
doe wat dingen.
End Sub
 
Doe er vooral een voorbeeldje bij. Je kunt overigens acties hangen aan SelectionChange.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox ActiveCell.Address
End Sub
Daar zou je eens mee kunnen stoeien.
 
Even de vraag lezen @OctaFish SelectionChange doet wat anders.
 
V&A,

deze begrijp ik niet.

[Plaats code tussen code tags. Het kan met onderstaande code in de module van het betreffende blad.

Private Sub Worksheet_Change(ByVal Target As Range)
doe wat dingen.
End Sub]

Waar staan de code tags?
"Doe wat dingen" betekend dat daar de VBA code staat van mij vraag?
 
Cel D15 (samengevoegde cellen)

is de cel waar ik een getal van 0 t/m 12 zet en vervolgens wil ik dan een enter geven om de macro te starten.

Hopelijk kan er een voorbeeld voor mij worden gemaakt.
 

Bijlagen

Laatst bewerkt:
Zoals VenA al zei, het gaat om het Worksheet_Change event.
Dit achter je werkblad:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "D15" Then
        If Target.Value = 5 Then
            ActiveSheet.Unprotect
            Columns("G:BY").Hidden = True
            Columns("AE:AI").Hidden = False
            ActiveSheet.Protect
        End If
    End If
End Sub
 
Laatst bewerkt:
Mag ook zo

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address(0, 0) = "D15" Then
    Unprotect
    Columns("G:BY").Hidden = Target.Value = 5
    Columns("AE:AI").Hidden = Target.Value <> 5
    Protect
  End If
End Sub
 
Is denk ik zelfs beter, afhankelijk van wat TS precies wil bereiken :)
 
Ik heb de oplossing van V&A gebruikt.
Na wat puzzelen is het me gelukt.
De code ziet er nu zoals hieronder uit.
Hopelijk zitten er geen gekke dingen in. Het werkt in ieder geval.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "D15" Then
If Target.Value = 0 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 1 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("G:K").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 2 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("M:Q").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 3 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("S:W").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 4 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("Y:AC").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 5 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("EA:AI").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 6 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("AK:AO").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 7 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("AQ:AU").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 8 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("AW:BA").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 9 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("BC:BG").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 10 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("BI:BM").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 11 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("BO:BS").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
If Target.Value = 12 Then
ActiveSheet.Unprotect
Columns("G:BY").Hidden = True
Columns("BU:BY").Hidden = False
Range("D15").Select
ActiveSheet.Protect
End If
End If

End Sub
 
Maar het gebruiken van codetags zoals al een paar keer is genoemd heb je nog steeds niet gedaan.
Kijk naar het verschil zoals wij hier code plaatsen en zoals jij dat doet.

Daarnaast is je "oplossing" VEEEEEL te uitgebreid.
Kijk eens naar dit:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "D15" Then
        ActiveSheet.Unprotect
        Columns("G:BY").Hidden = Target.Value <> 0
        Select Case Target.Value
            Case 1:     Columns("G:K").Hidden = False
            Case 2:     Columns("M:Q").Hidden = False
            Case 3:     Columns("S:W").Hidden = False
            Case 4:     Columns("Y:AC").Hidden = False
            Case 5:     Columns("EA:AI").Hidden = False
            Case 6:     Columns("AK:AO").Hidden = False
            Case 7:     Columns("AQ:AU").Hidden = False
            Case 8:     Columns("AW:BA").Hidden = False
            Case 9:     Columns("BC:BG").Hidden = False
            Case 10:    Columns("BI:BM").Hidden = False
            Case 11:    Columns("BO:BS").Hidden = False
            Case 12:    Columns("BU:BY").Hidden = False
        End Select
        Range("D15").Select
        ActiveSheet.Protect
    End If
End Sub
 
Laatst bewerkt:
Beste edmoor,

als er niet wordt uitgelegd wat ik dan moet doen om een code tag te gebruiken zal ik het ook nooit leren.
Het zou al helpen als er een concreet en volledig voorbeeld kwam.
 
Kijk eens naar de bericht nummers aan de rechterkant van de blauwe regel.
#12 is bericht nummer 12
 
Ik heb zelfs geen idee wat [#12] betekend.
Ik denk de 12e regel o.i.d.
Maar daar zie ik niets bijzonders
Sorry, ik kom niet uit een ei maar er zijn zaken die ik nooit gezien of gebruikt heb.

Ik heb wel een foutje gevonden in Case 5.
Moest wel even zoeken maar toch gevonden.
Er stond; (EA:AI) maar moest zijn (AE:AI)
 
Zo stond het in jouw code ook en had ik dus niks aan veranderd ;)
 
Maar heb je zelf gevonden en opgelost :thumb:
Nu nog even van de quote knop afblijven als je direct op het voorgaande bericht reageerd ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan