Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Funktion in einer Zelle aufrufen

Funktion in einer Zelle aufrufen
26.05.2006 14:14:42
Stephan
Hallo,
besteht in Excel die Möglichkeit eine Funktion / ein Makro, das in VBA geschrieben ist nur für die Zelle ausführen zu lassen?
Es geht um folgendes:
Ich habe ein Datei TestD mit der Tabelle Versuch. In dieser muss in Zelle B1 die Funktion ausgelöst werden, der Vergleicht ob der Wert in A1 gleich dem ist in der Zelle T5 im Blatt Liste aus der Datei Angaben.
Gruß
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 15:01:25
EtoPHG
Hallo Stephan,
3. Möglichkeiten:
Eine Funktion kannst Du so schreiben, dass sie mit dem Gleichheitszeichen in die Zelle geschrieben wird =DeineFunktion(Parameter1, [Parameter2]...).
Du musst sie nur Public in einem Modul beschreiben.
Ein Makro muss immer von extern (z.B. Button_click, Picture_click oder Excel (Alt-F8)) ausgelöst werden.
In beiden Fällen musst Du prüfen ob Deine Zelle angesprochen ist, wenn die Einschränkung auf Deine Zelle zutrifft, also etwa:
If Sheet("TestD").Activecell.Address "$B$1" then exit sub
3. Möglichkeit in das Tabellenereignis:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 2 Then
'DeinCode...
End If
End Sub

Gruss Hansueli
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 15:43:13
Stephan
Danke Hansueli für die Info.
Wie du auf dem Bild sehen kannst, geht es um sehr viele Zelle:
http://img154.imageshack.us/my.php?image=pfadformel5b9li.jpg
Dort wo momentan der Curser ist, dort würde das hineinkommen und in die nächsten 52 Zeilen, bzw 20 Spalten.
Dann müsste ich im VBA für jede einzelne Zelle das
If Sheet("TestD").Activecell.Address "$B$1" then exit sub
hineinschreiben.
Das mit dem Tabellenereignis, habe ich nciht ganz verstanden. Wird das automatisch ausgeführt, oder muss dazu auch hineingeklickt werden? Was für eine andere Möglichkeit gebe es, damit ich ein Ereignis automatisch ausgeführt wird? Oder ist das nur über WorkbookOpen() möglich?
Gruß
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 15:43:24
Stephan
Danke Hansueli für die Info.
Wie du auf dem Bild sehen kannst, geht es um sehr viele Zelle:
http://img154.imageshack.us/my.php?image=pfadformel5b9li.jpg
Dort wo momentan der Curser ist, dort würde das hineinkommen und in die nächsten 52 Zeilen, bzw 20 Spalten.
Dann müsste ich im VBA für jede einzelne Zelle das
If Sheet("TestD").Activecell.Address "$B$1" then exit sub
hineinschreiben.
Das mit dem Tabellenereignis, habe ich nciht ganz verstanden. Wird das automatisch ausgeführt, oder muss dazu auch hineingeklickt werden? Was für eine andere Möglichkeit gebe es, damit ich ein Ereignis automatisch ausgeführt wird? Oder ist das nur über WorkbookOpen() möglich?
Gruß
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 15:43:39
Stephan
Danke Hansueli für die Info.
Wie du auf dem Bild sehen kannst, geht es um sehr viele Zelle:
http://img154.imageshack.us/my.php?image=pfadformel5b9li.jpg
Dort wo momentan der Curser ist, dort würde das hineinkommen und in die nächsten 52 Zeilen, bzw 20 Spalten.
Dann müsste ich im VBA für jede einzelne Zelle das
If Sheet("TestD").Activecell.Address "$B$1" then exit sub
hineinschreiben.
Das mit dem Tabellenereignis, habe ich nciht ganz verstanden. Wird das automatisch ausgeführt, oder muss dazu auch hineingeklickt werden? Was für eine andere Möglichkeit gebe es, damit ich ein Ereignis automatisch ausgeführt wird? Oder ist das nur über WorkbookOpen() möglich?
Gruß
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 15:43:58
Stephan
Danke Hansueli für die Info.
Wie du auf dem Bild sehen kannst, geht es um sehr viele Zelle:
http://img154.imageshack.us/my.php?image=pfadformel5b9li.jpg
Dort wo momentan der Curser ist, dort würde das hineinkommen und in die nächsten 52 Zeilen, bzw 20 Spalten.
Dann müsste ich im VBA für jede einzelne Zelle das
If Sheet("TestD").Activecell.Address "$B$1" then exit sub
hineinschreiben.
Das mit dem Tabellenereignis, habe ich nciht ganz verstanden. Wird das automatisch ausgeführt, oder muss dazu auch hineingeklickt werden? Was für eine andere Möglichkeit gebe es, damit ich ein Ereignis automatisch ausgeführt wird? Oder ist das nur über WorkbookOpen() möglich?
Gruß
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 17:19:17
EtoPHG
Hallo Stephan,
Dort wo momentan der Curser ist, dort würde das hineinkommen...
Was würdest Du denn dort reinschreiben ?
Das Ereignis Worksheet_SelectionChange wird jedesmal ausgeführt, wenn die aktive Zelle (cursor) in einem Tabellenblatt wechselt. Target enthält dabei die Angabe über die aktive Zelle (Range-Selection), d.h. damit kannst Du prüfen wo der Cursor ist.
Im Beispiel von oben:
.Row =1 (Zeile 1), .Column = 2 heisst Spalte 2 (also B1).
Wenn Du mehr Angaben, was Deine Funktion oder Dein Makro denn genau macht, oder machen soll wäre die Hilfe vielleicht einfacher.
Gruss Hansueli
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 17:20:31
EtoPHG
Hallo Stephan,
Dort wo momentan der Curser ist, dort würde das hineinkommen...
Was würdest Du denn dort reinschreiben ?
Das Ereignis Worksheet_SelectionChange wird jedesmal ausgeführt, wenn die aktive Zelle (cursor) in einem Tabellenblatt wechselt. Target enthält dabei die Angabe über die aktive Zelle (Range-Selection), d.h. damit kannst Du prüfen wo der Cursor ist.
Im Beispiel von oben:
.Row =1 (Zeile 1), .Column = 2 heisst Spalte 2 (also B1).
Wenn Du mehr Angaben, was Deine Funktion oder Dein Makro denn genau macht, oder machen soll wäre die Hilfe vielleicht einfacher.
Übrigens kannst Du Dateien auch hier ins Forum laden: Services-Upload oder hier
https://www.herber.de/forum/file_upload.html
Gruss Hansueli
Anzeige
AW: Funktion in einer Zelle aufrufen
26.05.2006 17:57:44
Stephan
Also, dann eine Erklärung für die Aufgabe.
Ich möchte in dieser Datei http://mach-stg.beeven.de/download/zeit_ist_soll.xls , in Zelle K9 eine Funktion einbauen, die so aussieht, wie die momentane Wenn-Formel, d.h. es wird aus der Tabelle Dateiliste der Pfad zusammengesetzt und es soll der Inhalt von der Vorlage!S5 mit dem Januar 2006!S4 verglichen werden. Falls die Beiden übereinstimmen, dann soll die Summe aus dem Bereich S8-S10 zusammengezählt werden und übertragen werden.
https://www.herber.de/bbs/user/33926.xls
Gruß
PS: Wie kann man einen Beitrag editieren / löschen?
Anzeige
AW: Funktion in einer Zelle aufrufen
27.05.2006 12:05:36
Herbert
"PS: Wie kann man einen Beitrag editieren / löschen?"
Gar nicht! Wie wärs, wenn du dich zunächst mal mit den Forumregeln vertraut machst?
mfg Herbert
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Funktion in einer Zelle aufrufen


Schritt-für-Schritt-Anleitung

Um eine Excel VBA Funktion in einer Zelle aufzurufen, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor (drücke ALT + F11).
  2. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster auf „VBAProject (DeinWorkbook)“ > „Einfügen“ > „Modul“.
  3. Schreibe Deine Funktion. Stelle sicher, dass die Funktion als Public deklariert ist, damit sie in Excel aufgerufen werden kann:
    Public Function DeineFunktion(Parameter1 As Double, Optional Parameter2 As Double) As Double
       DeineFunktion = Parameter1 + Parameter2 ' Beispiel: Summiert zwei Werte
    End Function
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Gib in die Zelle B1 folgende Formel ein:
    =DeineFunktion(A1, 10) ' Beispiel: Ruft die Funktion mit A1 und 10 als Parameter auf

Häufige Fehler und Lösungen

  • Fehler: #NAME?
    Dieser Fehler tritt auf, wenn die Funktion nicht gefunden wird. Stelle sicher, dass die Funktion als Public deklariert ist und der Name korrekt geschrieben wurde.

  • Fehler: Ungültiger Parameter
    Überprüfe die Datentypen der Parameter in Deiner Funktion. Wenn Du beispielsweise einen String übergibst, die Funktion aber einen Double erwartet, wird ein Fehler angezeigt.


Alternative Methoden

  1. Verwendung von Worksheet-Events: Du kannst das Worksheet_SelectionChange-Ereignis verwenden, um eine Funktion automatisch auszuführen, wenn die aktive Zelle gewechselt wird:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Address = "$B$1" Then
           Call DeineFunktion(Target.Offset(0, -1).Value) ' Beispiel: Aufruf der Funktion mit Wert von A1
       End If
    End Sub
  2. Makros für Batch-Verarbeitung: Erstelle ein Makro, das mehrere Zellen gleichzeitig verarbeitet und die Funktion aufruft. Dies ist besonders nützlich, wenn Du viele Zellen in einem Bereich hast.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du eine Excel Funktion ausführen kannst:

  1. Einfacher Vergleich:

    Public Function Vergleich(A As Variant, B As Variant) As String
       If A = B Then
           Vergleich = "Gleich"
       Else
           Vergleich = "Ungleich"
       End If
    End Function

    In Zelle B1 kannst Du dann =Vergleich(A1, T5) nutzen.

  2. Summenfunktion:

    Public Function SummeBerechnen(StartZelle As Range, EndZelle As Range) As Double
       Dim Summe As Double
       Dim Zelle As Range
       For Each Zelle In Range(StartZelle, EndZelle)
           Summe = Summe + Zelle.Value
       Next Zelle
       SummeBerechnen = Summe
    End Function

    Dies kannst Du in B1 verwenden, um die Summe eines bestimmten Bereichs zu berechnen: =SummeBerechnen(A1, A10).


Tipps für Profis

  • Verwende Option Explicit: Füge Option Explicit am Anfang Deines Moduls hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Debugging: Nutze die Debugging-Tools im VBA-Editor (z.B. Haltepunkte setzen), um Deine Funktionen zu testen und Fehler zu finden.
  • Code-Kommentare: Kommentiere Deinen Code ausreichend, um die Lesbarkeit und Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich eine Excel VBA Funktion aufrufen, die kein Ergebnis zurückgibt?
Du kannst eine Subroutine (Sub) anstelle einer Funktion verwenden und diese einfach über einen Button oder ein Ereignis auslösen.

2. Gibt es Einschränkungen bei der Verwendung von VBA-Funktionen in Excel?
Ja, VBA-Funktionen können nicht in Array-Formeln verwendet werden und müssen in einem Modul als Public definiert sein, um in Excel aufgerufen zu werden.

3. Wie kann ich eine eigene Funktion in Excel nutzen?
Stelle sicher, dass die Funktion im VBA-Editor korrekt deklariert ist und rufe sie in einer Zelle mit der Formel-Syntax auf, z.B. =DeineFunktion(Parameter).

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige