Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
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

Makro automatisch ausführen?

Makro automatisch ausführen?
20.09.2021 15:48:19
Andreas
Hi zusammen,
habe unten stehende VBA von Uwe bekommen (Danke nochmal an dieser Stelle Uwe),
diese passt mir die Spaltenbreite automatisch an den Wert an, der in der ersten Zeile eingegeben wird.
Funktioniert auch alles wunderbar :)
Das Problem ist nur, dass ich die Werte, die in der ersten Zeile eingetragen werden jetzt mit einer Formel ermitteln möchte.
Wird dieser Wert jetzt also mittels meiner (WENN-Fomel) ermittelt und ändert sich, aktiviert sich die VBA nicht.
Habe dann versucht die VBA auf Calculate zu setzten, das hat aber leider nichts gebracht.
Weiß jemand Rat?
Vielen Dank vorab
Gruß Andreas

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z, MMin As Integer, RNG As Range
MMin = 5 'Mindestbreite
Set RNG = Intersect(Target, Rows(1))
If Not RNG Is Nothing Then
For Each Z In RNG
Z.Columns.ColumnWidth = WorksheetFunction.Max(MMin, Z.Value)
Next
End If
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro automatisch ausführen?
20.09.2021 16:06:36
Herbert
Moin,
du nimmst das jeweilige Tabellenblatt in VBA,
als Beispiel:
Tabelle1, links wählst du worksheet aus und rechts dann bychange oder so in der Art,
in das dann vorgeschriebene schreibst du dann Call "Makroname" (- das ohne die Anführungszeichen und tada
jetzt sollte bei jeder änderung des jeweiligen Tabellenblatts das Makro ausgeführt werden und somit der Wert aktualisiert / geändert werden.
MfG
Herbert
kleine Verbesserung
20.09.2021 16:09:19
Herbert
Moin,
ich noch einmal,
ich schrieb byChange, es heißt einfach nur Change,
also auf der linken Seite: Worksheet
Rechte Seite: Change
Was angezeigt werden solle:

Private Sub Worksheet_Change(ByVal Target As Range)
Call Deine_Makrobezeichnung
End Sub
Versteht sich wie gesagt,
auf dem jeweiligen Tabellenblatt,
wo nach änderung das Makro ausgeübt werden soll!
MfG
Herbert
Anzeige
AW: kleine Verbesserung
21.09.2021 08:46:56
Andreas
Hi Herbert,
danke für deine Hilfe.
Deine Zeile habe ich so im Code bereits hinterlegt, leider funktioniert dass aber nur, wenn die Zahl manuell eingegeben wird (siehe Tabellenblatt Uwe).
Wird der Wert über eine Formel ermittelt, passiert einfach nichts. Bei der Gerd-Lösung kommt eine Fehlermeldung im VBA Code.
Hier meine Datei: https://www.herber.de/bbs/user/148175.xlsm
Vielleicht kannst du mir ja helfen.
Vielen Dank vorab
Gruß Andreas

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z, MMin As Integer, RNG As Range
MMin = 5 'Mindestbreite
Set RNG = Intersect(Target, Rows(1))
If Not RNG Is Nothing Then
For Each Z In RNG
Z.Columns.ColumnWidth = WorksheetFunction.Max(MMin, Z.Value)
Next
End If
End Sub

Anzeige
AW: Makro automatisch ausführen?
20.09.2021 17:24:02
onur
Das Change-Event reagiert nur auf MANUELLE (oder durch Code) Änderung einer Zelle, aber NICHT auf Änderung durch Formel.
AW: Makro automatisch ausführen?
20.09.2021 17:25:03
onur
Das Change-Event reagiert nur auf MANUELLE (oder durch Code) Änderung einer Zelle, aber NICHT auf Änderung durch Formel.
AW: Makro automatisch ausführen?
21.09.2021 08:44:39
Andreas
Hi Onur,
denke das ist mein Problem.
Kennst du vielleicht eine Lösung dafür?
Hier mal meine Datei, mit den beiden Lösungsvorschlägen, die ich bisher bekommen habe.
https://www.herber.de/bbs/user/148175.xlsm
Bei der Uwe Lösung funktioniert die Anpassung der Spaltenbreite nur, wenn die Zahl manuell in der ersten Zeile eigegeben wird.
Bei der Gerd Lösung kommt eine Fehlermeldung im VBA Code.
Kannst du mir sagen, was ich machen muss, damit es funktioniert?
Vielen Dank vorab
Gruß Andreas
Anzeige
Wie ändert sich denn der Wert der Formel?
20.09.2021 18:26:58
{Boris}
Hi,
in den meisten (natürlich nicht allen) Fällen doch durch manuelle Änderung eines Zellwertes. Was ist bei Dir der Auslöser?
VG, Boris
AW: Wie ändert sich denn der Wert der Formel?
21.09.2021 08:53:31
Andreas
Hi Boris,
Danke für die Nachfrage.
Meine Zellenwerte, werden über eine WENN Formel ermittelt.
Hier meine Datei mit den beiden Lösungsvorschlägen, die ich bisher bekommen habe: https://www.herber.de/bbs/user/148175.xlsm
Bei der Uwe-Lösung funktioniert die automatische Anpassung der Breite, wenn in der ersten Zeile manuell Werte eingetragen werden.
Über die Formel leider nicht.
Bei der Gerd Lösung kommt leider ein VBA-Fehler.
Hast du eine Idee?
Vielen Dank vorab
Gruß Andreas
Anzeige
AW: Makro automatisch ausführen?
20.09.2021 18:32:17
GerdL
Moin

Private Sub Worksheet_Calculate()
Dim Z As Double, MMin As Integer, RNG As Range
Application.ScreenUpdating = False
MMin = 5 'Mindestbreite
Set RNG = Rows(1).SpecialCells(xlCellTypeFormulas)
If Not RNG Is Nothing Then
For Each Z In RNG
Z.EntireColumn.ColumnWidth = WorksheetFunction.Max(MMin, Z.Value)
Next
End If
Set RNG = noting
End Sub
Gruß Gerd
AW: Makro automatisch ausführen?
21.09.2021 08:22:44
Andreas
Moin Gerd,
vielen Dank für deine Formel, leider funktioniert dass bei mir nicht.
Hab hier mal eine Testdatei, wo ich deinen Code eingebaut habe. https://www.herber.de/bbs/user/148174.xlsm
Vielleicht weißt du ja wieso es nicht funktioniert?
Vielen Dank schonmal
Gruß Andreas
Anzeige
AW: Makro automatisch ausführen?
21.09.2021 09:16:17
UweD
Hallo
mit 2 Änderungen klappt der Code von Gerd.
Z nicht als Double sondern als Variant deklarieren
Nothing enthält einen Schreibfehler

Private Sub Worksheet_Calculate()
Dim Z As Variant, MMin As Integer, RNG As Range
Application.ScreenUpdating = False
MMin = 5 'Mindestbreite
Set RNG = Rows(1).SpecialCells(xlCellTypeFormulas)
If Not RNG Is Nothing Then
For Each Z In RNG
Z.EntireColumn.ColumnWidth = WorksheetFunction.Max(MMin, Z.Value)
Next
End If
Set RNG = Nothing
End Sub
LG UweD
AW: Makro automatisch ausführen?
21.09.2021 09:20:22
Andreas
Vielen Dank Uwe :D
Funktioniert, Thema erledigt.
Wünsche dir einen schönen Dienstag.
Gruß Andreas
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige