Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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
Inhaltsverzeichnis

Change-Ereignis über Modul steuern

Change-Ereignis über Modul steuern
09.12.2019 15:19:57
Oisse
Hallo Zusammen,
folgendes Problem hätte ich bitte gerne gelöst:
Wenn sich im Tabellenblatt in Spalte 6 etwas ändert, mache das und das. (Das funktioniert einwandfrei)
Wie aber kann ich so eine Änderung per Makro aus einem allgemeinen Modul heraus auslösen?
Hintergrund:
Wenn ich Spalten lösche, soll eine Neuberechnung mit den bereits vorhandenen Werten in der Spalte 6 durchgeführt werden, also über eine Schleife.
Mein bisheriger Code funktioniert leider nicht:

For i = 4 To lz_Vor
With wks_Vorgang
.Range("F" & i).Select
Application.DoubleClick
Application.SendKeys ("{enter}")
End With
Next i

Weder Doppelklick noch Enter löst das Ereignis Change aus, sodass eine Neuberechnung stattfinden würde.
Wie also kann ich das lösen?
Vielen Dank schon mal.
Gruß Oisse

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Change-Ereignis über Modul steuern
09.12.2019 15:47:32
Daniel
HI
da gibt's zwei wege.
a) du schreibst den Code, der im Change-Event laufen soll in ein allgemeines Modul, ggf mit dem TARGET als Übergabeparameter.
dann kannst du dieses Makro entweder über das Change-Event oder aus deinem "normalen" Makro heraus aufrufen
b) man kann auch das Change-Event-Marko direkt aus einem Makros heraus aufrufen, ohne dass das jeweilige Event tatsächlich passieren muss.
hierzu muss man zwei dinge tun:
1. in der ersten Zeile des Event-Makros das "Private" in "Public" ändern
2. beim Aufruf des Makros den Tabellenblattnamen voranstellen. Dies ist notwendig, da jedes Tabellenblatt so ein Eventmakro haben kann und VBA muss ja wissen, welches du meinst.
der Zellbereich für Target muss natürlich übergeben werden.
Beispielcode für b)
im Modul des Tabellenblatts:
Public Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Geändert wurde der Zellbereich: " & Target.Address(0, 0)
End Sub
im allgemeinen Modul
Sub test()
Call Tabelle1.Worksheet_Change(Range("A1"))
End Sub
Gruß Daniel
Anzeige
AW: Change-Ereignis über Modul steuern
09.12.2019 18:52:58
Oisse
Hallo Daniel und vielen Dank für die Hilfe und entschuldige, dass ich mich so spät melde.
Nachdem ich selbst immer und immer wieder noch probiert habe, bin ich auf eine mehr als simple Lösung gekommen, mithilfe des Makrorekorders.
Und die Lösung ist den Wert einfach nochmal neu reinschreiben

For i = 4 To lz_Vor
With wks_Vorgang
.Range("F" & i) = .Range("F" & i)
End With
Next i

Dir noch einen schönen Abend.
Herzlichen Gruß
Oisse

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige