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

Application.Caller

Forumthread: Application.Caller

Application.Caller
11.09.2002 15:57:05
Thomas
Wie frage ich mit Application.Caller das Arbeitsblatt auf, von welchem Aufgerufen wurden ?

die Zeilen mit zeile = Application.Caller.Row
die Spalten mit spalte= Application.Caller.Column

aber wie das Arbeitsblatt ?

.Sheet und .Worksheet funktionieren nicht.

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Application.Caller
11.09.2002 16:09:02
Andreas S
Hallo,

versuch es mal so:

Application.VBE.SelectedVBComponent.Name

Gruss

Andreas

Re: Application.Caller
11.09.2002 16:14:37
Thomas
Das funktioniert schon ganz gut, nur gibt er mit Tabelle4 anstatt des Namens aus.

Wie komme ich an den Namen ?

Re: Application.Caller
11.09.2002 16:20:12
Andreas S
Sollte das nicht immer das ActiveSheet sein?
Anzeige
Re: Application.Caller
11.09.2002 16:32:13
Thomas
Ich habe es kurz zusammengefasst ...

SUB Makro1()
[....] sortieren der ganzen Daten in die entspr. Blätter
END SUB


Abfrage, wo ein Doppelklick gemacht wurde - hier z.B. Blatt "A"


Private Sub auto_open()
Worksheets("A").OnDoubleClick Auswahl
End Sub

In dieser Routine soll er mir Zeile, Spalte und Blatt in das Blatt(Auswahl) ausgeben.

Private Sub Auswahl()
zeile = Application.Caller.Row
spalte = Application.Caller.Column
blatt = Application.VBE.SelectedVBcomponent.Name
Worksheets("Auswahl").Select
Worksheets("Auswahl").Cells(1, 1) = zeile
Worksheets("Auswahl").Cells(1, 2) = spalte
Worksheets("Auswahl").Cells(1, 3) = blatt
Worksheets(blatt).Select
End Sub


Anzeige
Re: Application.Caller
11.09.2002 16:52:37
Andreas S
Würde es auch ein Worksheet-Ereignis tun?
Hierbei wird die angeklcikte Zelle übergeben.
Z.B.:



Re: Application.Caller
12.09.2002 10:01:45
Thomas
Ja, das tut es auch.

danke.

;
Anzeige

Infobox / Tutorial

Anwendung von Application.Caller in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblattname)" im Projektfenster und wähle "Einfügen" > "Modul".

  3. Füge das folgende Makro ein:

    Sub Makro1()
        ' Hier kannst du deine Daten sortieren
    End Sub
    
    Private Sub auto_open()
        Worksheets("A").OnDoubleClick Auswahl
    End Sub
    
    Private Sub Auswahl()
        Dim zeile As Long
        Dim spalte As Long
        Dim blatt As String
    
        zeile = Application.Caller.Row
        spalte = Application.Caller.Column
        blatt = Application.VBE.SelectedVBComponent.Name
    
        Worksheets("Auswahl").Select
        Worksheets("Auswahl").Cells(1, 1).Value = zeile
        Worksheets("Auswahl").Cells(1, 2).Value = spalte
        Worksheets("Auswahl").Cells(1, 3).Value = blatt
        Worksheets(blatt).Select
    End Sub
  4. Speichere dein Projekt und teste das Makro, indem du einen Doppelklick auf eine Zelle in Blatt "A" machst.


Häufige Fehler und Lösungen

  • Problem: Der Name des Arbeitsblatts wird als "Tabelle4" angezeigt.

    • Lösung: Anstelle von Application.VBE.SelectedVBComponent.Name kannst du Application.Caller.Worksheet.Name verwenden, um den tatsächlichen Namen des Arbeitsblattes zu erhalten.
  • Problem: Makro funktioniert nicht wie erwartet.

    • Lösung: Stelle sicher, dass das Makro aktiviert ist und dass du in der richtigen Arbeitsmappe arbeitest. Überprüfe auch, ob die Sicherheitsoptionen in Excel die Ausführung von Makros zulassen.

Alternative Methoden

Eine alternative Methode zur Verwendung von Application.Caller ist die Verwendung von Worksheet-Ereignissen, die die angeklickte Zelle übergeben. Hier ist ein Beispiel:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim zeile As Long
    Dim spalte As Long
    zeile = Target.Row
    spalte = Target.Column
    ' Weitere Aktionen hier
End Sub

Diese Methode ist besonders nützlich, wenn du auf bestimmte Zellen reagieren möchtest, ohne ein separates Makro zu verwenden.


Praktische Beispiele

  1. Zelleninhalt in ein anderes Blatt übertragen: Wenn du einen Doppelklick auf eine Zelle machst, kannst du deren Inhalt in ein anderes Blatt übertragen:

    Private Sub Auswahl()
        Worksheets("Zielblatt").Cells(1, 1).Value = Application.Caller.Value
    End Sub
  2. Informationen über die angeklickte Zelle sammeln: Du kannst auch zusätzliche Informationen wie die Adresse der Zelle erfassen:

    Dim adresse As String
    adresse = Application.Caller.Address
    Worksheets("Auswahl").Cells(2, 1).Value = adresse

Tipps für Profis

  • Nutze die Application.Caller.Address-Eigenschaft, um die genaue Adresse der Zelle zu erhalten, die das Makro aufgerufen hat.
  • Experimentiere mit verschiedenen Ereignissen wie Worksheet_Change oder Worksheet_SelectionChange, um die Interaktivität deiner Excel-Anwendung zu erhöhen.
  • Vermeide es, die VBE-Objekte zu verwenden, da dies die Lesbarkeit deines Codes beeinträchtigen kann. Halte deinen Code sauber und verständlich.

FAQ: Häufige Fragen

1. Was ist Application.Caller?
Application.Caller ist eine VBA-Eigenschaft, die dir erlaubt, Informationen über die Zelle zu erhalten, die ein Makro oder eine Funktion aufgerufen hat.

2. Wie kann ich die Zeilennummer und Spaltennummer mit Application.Caller abfragen?
Du kannst die Zeilennummer mit Application.Caller.Row und die Spaltennummer mit Application.Caller.Column abfragen.

3. Funktioniert Application.Caller in allen Excel-Versionen?
Ja, Application.Caller ist in den meisten modernen Excel-Versionen verfügbar, die VBA unterstützen. Achte darauf, dass Makros aktiviert sind.

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