• 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 na een bepaalde waarde

Status
Niet open voor verdere reacties.

BasMan

Gebruiker
Lid geworden
1 apr 2002
Berichten
131
Hallo iedereen,

In kolom A, cell 1 t/m 100 moet nadat er in een van de cellen H1 wordt ingevoerd een macro worden gestart, ik heb het geprobeerd maar het wil niet lukken, weet een van jullie het?

Mvg

Bas
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
  If Target <> "H1" Then Exit Sub
  'hier komt de uit te voeren code
End Sub
kopieer de macro naar de werkblad-code
 
Hallo Ingrid,

Het onderstaande heb ik overgenomen van je, maar hij doet het niet. Als ik in bijvoorbeeld A1 H1 neerzet dan gebeurt er niks. Selecteer ik bijvoorbeeld a1:a10 en druk dan op delete dan geeft de computer een fout aan. Trouwens in de cellen a1:a100 kan ook andere informatie staan. Maar het belangrijkste is gewoon dat hij een macro uitvoert als in een van de cellen H1 wordt neergezet.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
If Target <> "H1" Then Exit Sub
Range("F11").Select
ActiveCell.FormulaR1C1 = "1"
Range("F12").Select
ActiveCell.FormulaR1C1 = "2"
Range("F13").Select
ActiveCell.FormulaR1C1 = "3"
Range("F14").Select
ActiveCell.FormulaR1C1 = "4"
Range("F15").Select
ActiveCell.FormulaR1C1 = "5"
Range("F16").Select
End Sub

Alvast bedankt

Bas
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
  If Target(1) <> "H1" Then Exit Sub
  Range("F11") = "1"
  Range("F12") = "2"
  Range("F13") = "3"
  Range("F14") = "4"
  Range("F15") = "5"
  Range("F16").Select
End Sub
Deze macro zal enkel starten als je exact H1 intypt, als de macro ook moet starten bij h1 kan je volgende regel bovenaan (voor Private Sub ...) plaatsen:
Code:
Option Compare Text
 
Hij doet het

Hallo Ingrid,

Bedankt voor je hulp hij doet het.

If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
If Target <> "H1" Then Exit Sub
hier komt de code

If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
If Target <> "H2" Then Exit Sub
hier komt de code

Nu had ik de bovenstaande kode ook toegevoegd maar deze pakt hij niet. Hij pakt alleen de "h2" als je eerst h1 in de reeks invoert dan moet dus niet. Weet jij hoe dit wel moet?

alvast bedankt

Bas
 
Hoi Basman,

In de code van Ingrid staat een If then die niet afgesloten wordt met een "End if" (is in dat voorbeeld niet nodig).

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
If Target(1) <> "H1" Then
Exit Sub
Else
Range("F11") = "1"
Range("F12") = "2"
Range("F13") = "3"
Range("F14") = "4"
Range("F15") = "5"
Range("F16").Select

End if
Volgende If then
End Sub

Ingrid je had helemaal gelijk.

Jeroen
 
Laatst bewerkt:
Bas,

In de 2e regel beëindig je de macro als de waarde verschillend is van H1:
If Target(1) <> "H1" Then Exit Sub
Dus als de waarde H2 is zal de macro niets doen.

Je kan de macro zo aanpassen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
  If Target(1) = "H1" Then
    Range("F11") = "1"
    Range("F12") = "2"
    Range("F13") = "3"
    Range("F14") = "4"
    Range("F15") = "5"
    Range("F16").Select
  ElseIf Target(1) = "H2" Then
    'code
  End If
End Sub
Als je veel verschillende codes hebt kan je echter beter gebruik maken van een Select Case-instructie:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
  Select Case Target(1)
    Case "H1"
      Range("F11") = "1"
      Range("F12") = "2"
      Range("F13") = "3"
      Range("F14") = "4"
      Range("F15") = "5"
      Range("F16").Select
    Case "H2"
      'code
    Case Else
      'code
  End Select
End Sub

Jeroen,

Heb jij de code die je geeft eens gecompileerd? Je zal de foutmelding End If zonder blok If krijgen.
Je plaats een End If terwijl er geen If-instructie meer open staat.
Als je de instructie voor Then op 1 lijn plaatst met de If-voorwaarde, dan mag er geen End If gebruikt worden.
 
Dit werkt helemaal perfect.

Iedereen bedankt hiervoor!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan