Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1456to1460
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 per Function starten und Wert auslesen

Makro per Function starten und Wert auslesen
07.11.2015 12:28:33
Tobias
Hallo liebes Forum,
ich habe ein kleines Problem welches für euch bestimmt nicht (hoffe ich) allzu schwer zu lösen ist, welches ich aber einfach nicht auf die Reihe bekomme. Folgendes: Ich habe ein Excelsheet in welchem per WENN Funktion in Zelle C24 und Zelle C25 (unabhängig voneinander) der Wert WAHR oder FALSCH eingetragen werden kann. Nun möchte ich falls C24 WAHR ist ---> =WENN(C24="WAHR";ZählenTeilmitDeckel();""), dass eine Function gestartet wird welche wiederum eine Sub startet welche einen Wert in Zelle C26 schreibt...Falls C25 WAHR ist, soll dieser Wert wieder auf 0 gesetzt werden...ich bekomme aber absolut nichts angezeigt. Beigefügt der Code welcher in Modul1 eingetragen ist.

Public Function ZählenTeilmitDeckel() As String
Call Zählen
End Function

Public Sub Zählen()
Dim a As Integer
Sheets("Tabelle1").Select
If Range("C24").Value = "WAHR" Then
a = a + 1
Range("C26").Value = a
ElseIf Range("C25") = "WAHR" Then
a = 0
Range("C26") = a
End If
End Sub

Ich hoffe mir kann jemand weiterhelfen da ich mich nicht wirklich auskenne...

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro per Function starten und Wert auslesen
07.11.2015 13:05:39
Tino
Hallo,
eine Funktion aus einer Zelle aufgerufen kann nicht so ohne weiteres seine Umgebung beeinflussen.
Ich würde bei der Zelle ansetzen der die Wenn Funktion auslöst.
In etwa so, kenne aber deine Tabelle nicht.
kommt als Code in Tabelle
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Cells(1, 1).Address = "$B$24" Then 
    Application.EnableEvents = False 
        Range("C26").Value = IIf(Range("C24").Value = "WAHR", 1, 0) 
    Application.EnableEvents = True 
End If 
End Sub 
 
Gruß Tino

Anzeige
AW: Makro per Function starten und Wert auslesen
07.11.2015 13:19:30
Tobias
Hallo,
vielen Dank für deine Antwort. Ich sehe gerade dass ich ein wesentlichen Teil meines Problems nicht richtig beschrieben habe... Ich wollte es über den Weg der Function machen, da ich das Makro automatisch ausführen möchte. D.h. jdesmal wenn der Wert in C24 von FALSCH auf WAHR wechselt soll das Makro automatisch ausgeführt werden. Genauso soll der Wert in Zelle C26 automatisch auf 0 gesetzt werden wenn Zelle C25 von FALSCH auf WAHR wechselt.

AW: Makro per Function starten und Wert auslesen
07.11.2015 13:24:46
Tino
Hallo,
Worksheet_Change ist ein Event Makro das bei Änderung in einer Zelle ausgelöst wird.
Die Wenn Formel wird ja bestimmt von irgendeiner Zelle durch Eingabe berechnet und
bei dieser Zelle oder Zellbereich müsstest Du ansetzen.
Wenn Du eine Bsp. Datei hast, kann ich versuche dies einzubauen.
Gruß Tino

Anzeige
AW: Makro per Function starten und Wert auslesen
07.11.2015 13:44:44
Tobias
Hallo,
das mit dem Worksheet_Change hört sich schonmal gut an. Leider habe ich noch keine Bespieldatei da ich diesen Vorgang als erstes brauche und mir den Rest dann darum "aufbauen" möchte.
Es ist einfach so, dass ich in Zelle C24 oder C25 per Hand jeweils WAHR oder FALSCH eintragen möchte. Falls C24= WAHR ist soll automatisch der Wert in Zelle C26 um 1 erhöht werden, falls C25= WAHR ist soll der Wert in Zelle C26 auf den Wert 0 gesetzt werden. Mein weiteres Vorgehen ist dann, dass ich diese Daten verwenden werde um daraus (zusammen mit anderen Daten) ein Chart zu erstellen.

Anzeige
AW: Makro per Function starten und Wert auslesen
07.11.2015 14:05:57
Tino
Hallo,
der Ablauf ist seltsam, für Wahr/Falsch könnte auch eine Zelle ausreichen.
Hier mal von Deiner Version ausgegangen ein Bsp, mehr kann ich nicht helfen.
https://www.herber.de/bbs/user/101307.xlsm
Gruß Tino

AW: Makro per Function starten und Wert auslesen
07.11.2015 14:52:01
Tobias
Hallo Tino,
vielen Dank für deine Hilfe, das war genau das was ich gesucht habe!
Gruß
Tobias

AW: Makro per Function starten und Wert auslesen
07.11.2015 15:12:48
Tobias
Eine Frage hätte ich nun doch noch...Der selbe Ablauf wie in Zelle C24, C25 und C26 soll nun auch in den Zellen C27, C28 und C29 ablaufen. Also wenn C27 WAHR ist, dann soll C29 um 1 erhöht werden und wenn C28 WAHR ist, soll C29 auf 0 gesetzt werden. Ich habe versucht deinen Code wie unten zu sehen ist zu erweitern. Funktioniert auch allerdings wird bei C28= WAHR , C29 nicht auf 0 gesetzt. Habe ich einen Fehler gemacht?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Target, Range("C24:C25"))
If Not rng Is Nothing Then
Application.EnableEvents = False
For Each rng In rng.Cells
If rng.Value = True Then
Select Case rng.Row
Case 24: Range("C26").Value = Range("C26").Value + 1
Case 25: Range("C26").Value = 0
End Select
End If
Next rng
Application.EnableEvents = True
End If
Set rng = Intersect(Target, Range("C27:C28"))
If Not rng Is Nothing Then
Application.EnableEvents = False
For Each rng In rng.Cells
If rng.Value = True Then
Select Case rng.Row
Case 27: Range("C29").Value = Range("C29").Value + 1
Case 28: Range("C29").Value = 0
End Select
End If
Next rng
Application.EnableEvents = True
End If
End Sub

Anzeige
AW: Makro per Function starten und Wert auslesen
07.11.2015 16:41:31
Tino
Hallo,
würde ich evtl. mal so versuchen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, rngAr As Range, rngTmp As Range
'Bereiche (nicht zusammenhängent!)
Set rngAr = Range("C24:C25", "C27:C28")
Set rng = Intersect(Target, rngAr)
If Not rng Is Nothing Then
Application.EnableEvents = False
For Each rng In rng.Cells
If rng.Value = True Then
With rng
For Each rngTmp In rngAr.Areas
If rngTmp.Rows(1).Row = .Row Then
.Offset(2, 0).Value = .Offset(2, 0).Value + 1
Else
.Offset(1, 0).Value = 0
End If
Next rngTmp
End With
End If
Next rng
Application.EnableEvents = True
End If
End Sub
Gruß Tino

Anzeige
Einer Funktion ist es in Xl generell nicht ...
07.11.2015 14:11:30
Luc:-?
…gestattet, etwas Anderes als ihr eigenes Ergebnis zu ändern, Tobias,
alle anderen Aktionen sind bis auf wenige Ausnahmen nicht möglich. Bei Aufruf einer SubProzedur aus einer Fkt gilt die Prozedur als externer Bestandteil der Fkt. Deshalb ist dein ursprünglicher Ansatz nicht zielführend und hat Tino dir dafür eine Alternative angeboten, die auch so fktionieren dürfte, wenn du WAHR und FALSCH manuell eintragen willst. Wären diese Werte ein wechselndes FmlErgebnis, müsste entweder ein anderes Ereignis oder die Zelle benutzt wdn, in der die Änderung manuell (auch durch Einkopieren!) erfolgt.
Alle weiteren Aktionen wie Berechnungen in der SubProzedur könnten auch mit Fmln ausgeführt wdn, so dass man sich fragt, warum das Ganze quasi „von hinten durch die Brust geschossen“ erfolgen soll und nicht wie üblich.
Deshalb muss ich hier auch nicht auf diverse Möglichkeiten hinweisen, wie dein Ziel außerdem noch erreichbar wäre.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
Das bezieht sich nur auf Fktt in ZellFmln! owT
07.11.2015 17:56:08
Luc:-?
:-?

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige