• 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.

Tweede VBA-code

Status
Niet open voor verdere reacties.

Jon12

Gebruiker
Lid geworden
10 apr 2017
Berichten
76
Bij het plaatsen van een tweede soortgelijke code in VBA doe ik iets fout. Zoals in het voorbeeld krijg ik uiteraard de foutmelding: Ambiguous name detected: Worksheet_Change

Wanneer ik de naam verander naar Worksheet_Change2 (of Worksheet_Change_2 of Worksheet2_Change) dan verandert het object Worksheet in General en is er geen resultaat.
Kan iemand mij vertellen waar het fout gaat?

(De code plaatst een tekst in een cel die verdwijnt zodra er iets overheen getypt wordt, maar terugkomt zodra de tekst weer wordt verwijderd) Dit wil ik uitvoeren voor meerdere cellen in hetzelfde werkblad.
 

Bijlagen

  • VBA.PNG
    VBA.PNG
    24,8 KB · Weergaven: 60
Worksheet_Change kan je maar 1 keer gebruiken. Je zal de code dus moeten combineren.

bv.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("A2:A3")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
      If Target = "" Then Target = Application.Choose(Target.Row - 1, "Categorie:", "Categorie2:")
    Application.EnableEvents = True
End Sub
 
Dank je wel

Dankzij dit kan ik verder puzzelen met kortere codes.
Dank je wel, ik was al op zoek naar zoiets. Heb zelf ook een andere manier gevonden. Deze is misschien erg omslachtig, maar zal hem toch even plaatsen:


Private Sub Worksheet_Change(ByVal Target As Range)
Worksheet_Change_A Target
Worksheet_Change_B Target
Worksheet_Change_C Target
Worksheet_Change_D Target
End Sub

Private Sub Worksheet_Change_A(ByVal Target As Range)
If Target.Address <> "$J$2" Then Exit Sub
Application.EnableEvents = False
If Target = "" Then Target = "Test1:"
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change_B(ByVal Target As Range)
If Target.Address <> "$J$3" Then Exit Sub
Application.EnableEvents = False
If Target = "" Then Target = "Test2:"
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change_C(ByVal Target As Range)
If Target.Address <> "$J$4" Then Exit Sub
Application.EnableEvents = False
If Target = "" Then Target = "Test3:"
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change_D(ByVal Target As Range)
If Target.Address <> "$J$5" Then Exit Sub
Application.EnableEvents = False
If Target = "" Then Target = "Test4:"
Application.EnableEvents = True
End Sub
 
Dit lijkt mij voldoende

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("J2:J5")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
      If Target = "" Then Target = "Test" & Target.Row - 1 & ":"
    Application.EnableEvents = True
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan