• 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 automatisch uitvoeren met voorwaarde

Status
Niet open voor verdere reacties.

surfingmaster

Gebruiker
Lid geworden
5 mei 2010
Berichten
88
Beste dames en heren,

ik probeer een macro te maken die automatisch uitgevoerd wordt op 'blad1' als de getallen en/of het aantal kolommen veranderen in range 'Weeknummers' op 'blad2'.

Het enigste wat ik gevonden heb is:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
.
Verder kom ik niet.

Groet,
Erwin
 
ik probeer een macro te maken die automatisch uitgevoerd wordt op 'blad1' als de getallen en/of het aantal kolommen veranderen in range 'Weeknummers' op 'blad2'. Het enigste wat ik gevonden heb is:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Op wat heb je dan gezocht, als je bij die code uitkomt?
Het is niet de juiste code, het zal waarschijnlijk moeten zijn (afhankelijk van wat je precies wil):
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Misschien moet je je toch maar eens verdiepen in de beginselen van vba.
Je informatie vind ik te te summier om een goed antwoord te geven: kolommen meer en minder... waar en hoe?
Plaats eens een voorbeeld met gegevens.
 
Was een foutje, het moest zijn
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

En wat je zegt dat ik me daar beter in moet verdiepen. Dat is het probleem, ik heb al gezocht op internet en in de literatuur, maar begrijp het principe nog niet helemaal.

Wat ik bedoel is als er iets aan range 'Weeknummers' (N16:Z16) van 'blad2'veranderd. De getallen veranderen of er worden cellen die daar tussen staan verwijderd of er worden cellen tussen gevoegd. Dat dan de macro op 'blad1' uitgevoerd moet worden.

Groet,
Erwin
 
Laatst bewerkt:
Was een foutje, het moest zijn
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Mijn vraag was wat jouw zoekopdracht was die als resultaat die code geeft.
Wat ik bedoel is als er iets aan range 'Weeknummers' (N16:Z16) van 'blad2'veranderd. De getallen veranderen of er worden cellen die daar tussen staan verwijderd of er worden cellen tussen gevoegd. Dat dan de macro op 'blad1' uitgevoerd moet worden.
En wat moet die macro dan doen?
 
Tja, als de vragensteller niet laat weten wat de macro moet doen, dan maar een algemene oplossing waarin hij/zij het zelf kan invullen:
Rechtsklik op de tab van het blad waarin de code moet werken (bv. Blad1) en kies: Programmacode weergeven.
Plaats in de rechterkolom van het venster waarin je dan terechtkomt het volgende:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("N16:Z16"), Target) Is Nothing Then
' Hier plaats je wat de macro moet doen.
End If
End Sub
 
Sorry dat ik niet eerder kon reageren, maar toch bedankt voor je antwoord.

De zoekopdracht was 'macro automatisch uitvoeren'.

Ik heb echter al een andere oplossing die werkt alleen als dat tabblad actief is:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$2" Then
End If
End Sub

In B2 op tabblad1 staat een formule die gekoppeld is aan Range("N16:Z16") op tabblad2. B2 op tabblad1 verandert dus als er iets veranderd aan range N16:Z16. Het probleem is dat deze oplossing alleen werkt als er geen formule instaat? Maar een gewoon getal, die je kunt wijzigen. Hoe kan je dit oplossen?

Allvast,
bedankt
 
Laatst bewerkt:
Een oplossing is er wel, alleen is mij je vraag niet duidelijk.
Ik had begrepen dat, als er in N16:Z16 iets wijzigt, dat er dan elders in het blad wat moest gebeuren.
Als dat juist is, dan is de vraag: WAT moet er dan gebeuren ?
Als dat niet juist is, wat wil dan wel ? Precies omschrijven a.u.b.
 
klopt wat je zegt. Als er iets in range N16:Z16 van tabblad2 veranderd dan moet de macro worden uitgevoerd. Ik had alleen een formule gemaakt in b2 op tabblad 1, die de waarden opteld van N16:N17 van tabblad2. En B2 gebruikt in de macro, want B2 staat in het tabblad waar de macro uitgevoerd moet worden.

Daardoor ben ik er achter gekomen, dat de macro niet werkt als het getal veranderd in een cel waar een formule in staat. In dit geval B2 of range N16:Z16.

Code:
If Target.Address = "$B$2" Then
of
Code:
If Not Intersect(Range("N16:Z16"), Target) Is Nothing Then
 
Laatst bewerkt:
Sorry hoor,
maar als je niet omschrijft WAT je precies wil bereiken met die macro, dan is geen goed antwoord mogelijk !!
 
Ik wil dat als B2 veranderd. Dat dan de macro automatisch uitgevoerd wordt.

In B2 staat een formule en daarom kom ik er niet uit.

Ik had als voorwaarde:
Code:
If Target.Address = "$B$2" Then 
Macro
End if
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("B2"), Target) Is Nothing Then
'Hier plaats je wat de macro moet doen.
'Helaas deel je dat nog steeds niet mee,
'zodat geen goed antwoord mogelijk is
End If
End Sub
 
Hier dan de hele macro als je die echt nodig hebt. De macro voegt kolommen toe als er minder kolommen zijn dan het getal dat in cel b2 staat en verwijdert ze als het er te veel zijn.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("B2"), Target) Is Nothing Then
Application.ScreenUpdating = False
Dim col As Integer
col = ActiveSheet.UsedRange.Columns.Count
With ActiveSheet
If col > [B2] Then
.Unprotect Password:=""
 For i = 1 To .UsedRange.Columns.Count - [B2]
.Cells(1, .UsedRange.Columns.Count).EntireColumn.Delete
Next
Autofit
.Protect Password:=""
End If
If col < [B2] Then
.Unprotect Password:=""
For i = 1 To [B2] - .UsedRange.Columns.Count
.Columns(15).Copy
.Cells(1, .UsedRange.Columns.Count + 1).Insert
Next
Autofit
.Protect Password:=""
Else
ActiveSheet.Unprotect Password:=""
Autofit
ActiveSheet.Protect Password:=""
End If
Application.ScreenUpdating = True
End With
End If
End Sub

De macro werkt nog steeds niet. Als ik in B2 een ander getal in tik doet hij het wel, maar niet als er een formule instaat zoals nu.
 
Hou eerst maar eens grote schoonmaak in die macro.
Meerdere keren beveiligen en autofit heeft geen enkele zin, 1 keer volstaat.
En autofit moet je wel ergens op toepassen (op kolommen bijvoorbeeld, NIET op sheet), het woord alleen volstaat niet.
En verder ontgaat mij het nut van die macro en ik ga hier niet mee verder.
Wellicht kunnen anderen op dit forum je beter helpen.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan