Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA-Code als Funktion: Aufruf aus welcher Zelle?

VBA-Code als Funktion: Aufruf aus welcher Zelle?
29.11.2006 15:55:11
Arthur
Hallo.
Ich habe eine kleine Funktion geschrieben, die ich aus einer Zelle aufrufe. Der Aufruf Funktioniert soweit.
Da die Funktion aus mehreren Zellen aufgerufen werden kann sollte ich wissen von wo der Aufruf gerade stammt.
Beispiel:
Public

Function HellowWorld() as String
HelloWorld = <Zeile> & "-" & <Spalte>
End Function

In den Zellen A1, B3, C5 steht nun =HelloWorld().
Das Ergebnis sollte lauten: 1-1, 3-2, 5-3
Vorbeugend: Natürlich möchte ich nicht die Zelldaten ausgeben, sondern Berechnungen in relativem Bezug durchführen. Das Beispiel sei nur ein Beispiel.
Wer's weiß und mir mitteil kriegt einen Punkt!
Gruß
Art

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Code als Funktion: Aufruf aus welcher Zell
29.11.2006 16:08:08
EtoPHG
Hallo Arthur,
Public

Function HelloWorld() As String
HelloWorld = "Zeile:" & Application.Caller.Row & " Spalte:" & Application.Caller.Column
End Function

Gruss Hansueli
Gracias
29.11.2006 16:15:00
Arthur
Vielen Dank, funktioniert wie gewünscht.
AW: VBA-Code als Funktion: Aufruf aus welcher Zelle?
29.11.2006 16:34:47
Luschi
Hallo Arthur,
übergebe doch einfach die Zelle als Parameter!
in Zelle C3: =HellowWorld(C3)
und die Funktion sieht dann so aus:

Function HellowWorld(ByRef xZelle as Range) as String
Application.Volatile
End Function

Allerdings benutze ich solche Funktionen nicht mehr, da sie bei häufigem Vorkommen das Arbeiten im Tabellenblatt sehr verlangsamen.
Man kann das "Application.Volatile" auch weglassen; dann wird diese Funktion aber nicht mehr bei jeder Dateneingabe neu berechnet und auch die F9-Taste hilft da nicht weiter.
Ich schreibe also diese Funktionsaufrufe in einer Sub-Berechnungsroutine, die per CommandButton gestartet wird. Außerdem wird sie bei mir im Ereignis "Speichern" aufgerufen.

Sub neuBerechnung()
Dim ws As Worksheet, rg As Range
Set ws = ThisWorkbook.Worksheets("meineTabelle1")
Set rg = ws.Range("C3")
HellowWorld rg
Set ws = ThisWorkbook.Worksheets("meineTabelle2")
Set rg = ws.Range("C8")
HellowWorld rg
Set rg = Nothing
Set ws = Nothing
End Sub

Gruß von Luschi
aus klein-Paris
Anzeige

177 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige