[excel] Macro starten mbv een formule.

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

Acties:
  • 0 Henk 'm!

  • SideBuster
  • Registratie: Februari 2001
  • Laatst online: 03-01 08:44

SideBuster

Deka Dirk AH Yeah Vomar Ald!!!

Topicstarter
Ik heb een macro in mijn sheet staan deze werd altijd gestart door een knop in te drukken. Nu zou het makkelijer zijn wanneer de macro gestart wordt als er een waarde in een bepaalde cel is ingegeven en daarna op Enter (of een andere enkele toets) wordt gedrukt.

Is dit uberhaubt mogelijk?

V*k voor de frisdrank daar op de hoek... | Specs


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 15:33

Schonhose

Retro Icoon

Ja, maar dan moet je werken met het volgende:

Visual Basic:
1
2
3
Private Sub Worksheet_Change(ByVal Target As Range)
   StartMacro '(Vul hier je eigen macro in)
End Sub


Deze moet je plaatsen door in de vba project editor te klikken op de sheet (sheet1) met de rechtermuisknop en dan op code. Daar moet ie dus staan (in de code van je sheet. Dus niet in een module!)

Nu wordt elke keer dat je wat veranderd in je sheet de macro gestart. Je kunt eventueel in de sub ook nog een restrictie toepassen dat die verandering in een bepaalde range moet liggen (bijv. alleen kolom C). Als je daar niet uitkomt wil ik het wel even uitleggen.

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • SideBuster
  • Registratie: Februari 2001
  • Laatst online: 03-01 08:44

SideBuster

Deka Dirk AH Yeah Vomar Ald!!!

Topicstarter
Ah ok.. het is de bedoeling dat een bepaalde macro alleen gestart wordt als er in een bepaalde cel iets veranderd wordt.

V*k voor de frisdrank daar op de hoek... | Specs


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 15:33

Schonhose

Retro Icoon

Visual Basic:
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
   if ActiveCell.Address = "$A$1" then
       StartMacro '(Vul hier je eigen macro in)
   end if
End Sub


Nu kijkt ie naar de active cell en vergelijkt deze met het adres wat je opgeeft. In dit geval dus A1 (let niet op de $ tekens dat moet helaas....). Indien hij daar aan voldoet (er wordt wat veranderd in A1 dan start de macro. Anders stopt ie gewoon en doet ie niets.

Voer nu je eigen cell in maar wel met de $ tekens.......

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • KeeZ
  • Registratie: Februari 2001
  • Laatst online: 25-04-2022

KeeZ

Deze plek is te koop.

Visual Basic .NET:
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 If Target(1, 2) = "3" Then
  MsgBox ("woei!!")
 End If
End Sub


zo werkt het wel... bij mij tenmiste ;)

[ Voor 73% gewijzigd door KeeZ op 13-02-2003 14:35 ]

Deze plek is te koop.


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Visual Basic:
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
   if ActiveCell.Address(FALSE,FALSE) = "A1" then
       StartMacro '(Vul hier je eigen macro in)
   end if
End Sub


Zo kan het ook nog.. :p

  • SideBuster
  • Registratie: Februari 2001
  • Laatst online: 03-01 08:44

SideBuster

Deka Dirk AH Yeah Vomar Ald!!!

Topicstarter
Ik krijg een compileer fout: Sub of Funtion is niet gedefieerd

Download hem anders maar even.
http://www.froeling.net/downloads/Dartscore.zip

Het is de bedoeling dat bij het veranderen van cel J7 de macro "speler01_ok" gaat lopen en bij het veranderen van cel N7 de macro "speler02_ok" gaat lopen.

[ Voor 67% gewijzigd door SideBuster op 13-02-2003 14:47 . Reden: Link added ]

V*k voor de frisdrank daar op de hoek... | Specs


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 15:33

Schonhose

Retro Icoon

Het moest dit zijn na testen:

Visual Basic:
1
2
3
4
5
6
7
8
9
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim SelectedCell As String
    SelectedCell = Mid$(ActiveCell.Address, 2, 1) & Right$(ActiveCell.Address, 1) - 1
   If SelectedCell = "J7" Then
       speler01_ok
   ElseIf SelectedCell = "N7" Then
       speler02_ok
   End If
End Sub

en dat allemaal omdat je na het invoeren van de cell op enter drukt waardoor hij 1 cel naar beneden gaat. Hiervoor moet je corrigeren.

Je kunt het downloaden.

Hoop alleen dat dit is wat je wou. >:)

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • SideBuster
  • Registratie: Februari 2001
  • Laatst online: 03-01 08:44

SideBuster

Deka Dirk AH Yeah Vomar Ald!!!

Topicstarter
ah coolio die is wat ik zocht...
many thanx!!

V*k voor de frisdrank daar op de hoek... | Specs


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

wat is er mis met:
Visual Basic:
1
2
3
4
5
6
7
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address(False, False) = "J7" Then
       speler01_ok
   ElseIf Target.Address(False, False) = "N7" Then
       speler02_ok
   End If
End Sub

??

ff tussendoor... veel recorded macro stuff... eerst Range("J7").Select en dan Selection.Copy ? duh...

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 15:33

Schonhose

Retro Icoon

Helemaal niets ware het niet dat je na het invoeren van de cell op enter drukt waardoor hij 1 cel naar beneden gaat. Hiervoor moet je corrigeren.

En ik ben zo lui om mijn eigen code te gebruiken, maar er zijn meerdere wegen naar Rome. >:)

Dat er veel record-macro spul instond viel mij ook al op :X Volgens mij kan die code efficienter. :X

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005

Pagina: 1