Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
464to468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
464to468
464to468
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

automatische Makroaktivierung

automatische Makroaktivierung
10.08.2004 14:47:40
M.
Hi, Freaks
ich habe ein Makro geschrieben, das mir auf einem Tabellenblatt eine kleine Zeichnung aus Rechtecken, Linien usw. generiert. Die Info der Abmaße der Formen erhalte ich über die Eingabe in Zellen auf dem gleichen Tabellenblatt. Mein Makro für z.B. das Rechteck 266 sieht so aus:
ActiveSheet.Shapes("Rectangle 266").Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Width = Tabelle3.Range("S6")
Selection.ShapeRange.Height = Tabelle3.Range("B14") / 2
Um das Makro nun zu starten, habe ich mir einen Commandbutton auf das Tabellenblatt gelegt und mit dem Makro verknüpft.
Funktioniert alles prächtig,er ändert die Größe des Rechtecks entsprechend ab. Nun wäre es natürlich komfortabler wenn sich die "Zeichnung" automatisch bei Eingabe eines Wertes ändert. Dies müsste entweder durch das markieren einer anderen Zelle mit Enter, Pfeil rechts passieren oder, da ich auch Zellen mit zugeordneten Drehfeldern habe, dies mit klicken auf die Dehfeldbuttons passieren.
Somit wäre der Button "Zeichnung aktualisieren" überflüssig!
Was fehlt in meiner Anweisung?
Danke und Gruß
Mario

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: automatische Makroaktivierung
Michael
Hallo Mario,
Du musst Dein Makro lediglich als Ereignisprozedur in einer Tabelle oder (falls Du es in verschiedenen Sheets benötigst) im Workbook definieren.
Angenommen, Dein Makro sieht so aus (etwas verkürzt ;-)):
Sub Marios_Makro()
msgbox "Hallo Mario"
End Sub
1.
Klicke im VBA Editor doppelt auf die Tabelle, in der das Makro laufen soll.
2.
Kopiere diesen Code

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub

in das Codefenster (oder selektiere aus den beiden über dem Codefenster Listen "Worksheet" und "Change".
3.
Kopiere Deinen Makrocode (ohne "Sub ..." und "End Sub ") zwischen die zwei Zeilen.

Private Sub Worksheet_Change(ByVal Target As Range)
msgbox "Hallo Mario"
End Sub

Das Makro wird jetzt jedes mal ausgeführt, wenn sich der Inhalt einer Zelle auf diesem Sheet ändert.
Falls es nur laufen soll, wenn die Änderung in bestimmten Zellen vorgenommen wurde, kannst Du darauf vorher abfragen. Z.B. so:

Private Sub Worksheet_Change(ByVal Target As Range)
' Beispiel für Zelle D2 in verschiedenen Variationen
If Target.Row = 2 And Target.Column = 4 Or _
Target.Address = "$D$2" Then
' hier Marios Makrocode
End If
End Sub

CIAO
Michael
Anzeige
AW: automatische Makroaktivierung
11.08.2004 08:16:20
M.
Hi, Michael
Danke für Deine Hilfe. Bin nach Deiner Anleitung vorgegangen... und siehe da:
ES FUNKTIONIERT !! Supi...
Nur leider nicht bei den Drehfeldern. Wenn ich da über diese kleinen Buttons die Zahl in der Zelle ändere, bleibt meine "Zeichnung" unbeeindruckt :-(((
Die Drehfelder sind über die Formular-Symbolleiste eingefügt, nicht über die Steuerelemente-Toolbox(VBA).
Vielleicht weißt Du da noch was....
Schöne Grüße
Mario
AW: automatische Makroaktivierung
Michael
Hallo Mario,
das haut mich um. Obwohl sich der Wert in der Zelle ändert wird der Trigger nicht ausgelöst. It's not a bug - it's a feature 8-((
Kannst Du wohl nur lösen, wenn Du dem Drehfeld ein Makro zuweist, das Deinen Code dann startet (rechte Maustaste auf Drehfeld, "Makro zuweisen", Namen ggf. modifizieren und "Neu").
CIAO
Michael
Anzeige
AW: automatische Makroaktivierung
11.08.2004 10:52:18
M.
Hi, Michael
laut Deiner Antwort habe ich ja alle Anweisungen zum ändern der Rechtecke usw. in das

Private Sub Worksheet_change(ByVal Target As Range)
End Sub
geschrieben.
Genau die gleichen Anweisungen habe ich in
pivate sub Zeichnung()
End Sub
kopiert und dem
Change-Ereignis des Spinbuttons zugewiesen. Jetzt funzt auch der Spinbutton.
Eins hab ich jetzt noch:
Die kleinste Einheit beim Spinbutton ist "1"!
Die Sprünge müssten aber 0,5 sein, aber das will er nicht!
Es würde zwar gehen, wenn ich über eine Formel in der Zelle durch 2 teile, aber dann habe ich das Problem, das andere User nicht das Drehfeld benutzen sondern direkt eingeben und dann ist für die nächste Drehfeldbenutzung die Formel weg!
Was tun?
Gruß Mario
Anzeige
AW: automatische Makroaktivierung
Michael
Hallo Mario,
unter der Voraussetzung, dass Du den Spinbutton nicht über die "Formulare" Toolbox, sondern über die "Steuerelemente" Toolbox hinzugefügt hast (bei "Formulare" heißt er normalerweise "Drehfeld 1", bei Steuerelemente "SpinButton1", funktionierts. Sollte der Button kein "Steuerelement" sein, musst Du ihn noch einmal löschen und neu anlegen.
Bei mir sieht der Code dann so aus:

Private Sub SpinButton1_Change()
ActiveSheet.Range("$C$3").Value = SpinButton1.Value / 2
End Sub

WICHTIG !
Nicht vergessen, dass der Anwender ja auch einen Wert in die Zelle eintragen kann. Daher muss in diesem Falle der SpinButton aktualisiert werden:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then SpinButton1.Value = Target.Value * 2
End Sub

Jetzt solltest Du eigentlich nur noch die Adresse der Zelle anpassen müssen und es sollte funktionieren.
CIAO
Michael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige