Toon posts:

[vba/excel] macro uitvoeren bij wijziging in een cel

Pagina: 1
Acties:
  • 1.233 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb in excel een programma geschreven dat bij een wijziging in cel D5 een bepaalde code uitvoert. Dit doe ik met de volgende functie in excel,

Private Sub Worksheet_Change(ByVal Target As Range)
if target = "$D$5" then

In de variabele target komt de cel te staan waar de wijziging in is aangebracht. Nu heb ik een probleem dat als een gebruiker een selectie maakt van bijvoorbeeld
D4 T/M D6 en hij drukt op delete, mijn macro niet wordt dan niet uitgevoert omdat in target de volgende "tekst" zit $D$4:$D$6

Is er een manier om bij elke wijziging in cel D5 (dus ook bij een selectie van meerdere cellen) de macro uit te voeren.

  • _VpS_
  • Registratie: September 2002
  • Laatst online: 14-04-2023
Check de functie Instr(...) <-- Onzin :P Beter leze |:(

[ Voor 37% gewijzigd door _VpS_ op 23-06-2004 11:48 ]

(bb) || !(bb)


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 06:31
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim beginrij As Integer
Dim eindrij As Integer
Dim beginkolom As Integer
Dim eindkolom As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
beginrij = Target.Cells(1, 1).Row
eindrij = beginrij - 1 + Target.Rows.Count
beginkolom = Target.Cells(1, 1).Column
eindkolom = beginkolom - 1 + Target.Columns.Count
If beginrij <= 5 And eindrij >= 5 And beginkolom <= 4 And eindkolom >= 4 Then

MsgBox beginrij & " " & eindrij & vbCrLf & beginkolom & " " & eindkolom
End If
End Sub


Dit lijkt het te doen, maar ik ben er niet tevreden mee. Er zit een redelijk lange berekening voor de eerste if, dus tragere PC's zullen hier wat stroperiger van worden.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Op een Eniac merk je dat misschien :)

Iig doet intersect wat TS wil, namelijk controleren of twee bereiken elkaar overlappen:

code:
1
2
3
4
    set rngControleRange=range("D5")
    If Not (Intersect(rngControleRange, Target) Is Nothing) Then
        'doe wat je moet doen
    End If

[ Voor 16% gewijzigd door Lustucru op 23-06-2004 11:51 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 06:31
Niesje schreef op 23 juni 2004 @ 11:40:
Op een Eniac merk je dat misschien :)
_/-\o_
Iig doet intersect wat TS wil, namelijk controleren of twee bereiken elkaar overlappen:

code:
1
2
3
4
    set rngControleRange=range("D5")
    If Not (Intersect(rngControleRange, Target) Is Nothing) Then
        'doe wat je moet doen
    End If
Ziet er beter uit dan mijn gepruts

[ Voor 3% gewijzigd door onkl op 23-06-2004 13:22 ]