Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

application.caller

Forumthread: application.caller

application.caller
25.09.2002 14:15:52
rudolf kiepetz
ich habe leider ein problem mit einem makro und zwar folgendes:

das makro beginnt folgender maßen

sub datum()
dim ac as range
set ac = Application.Caller
bla-bla-bla

beim ausführen des makros erhalte ich das debugging-fenster mit
der fehlermeldung "application.caller=fehler 2023"

kann jemand mit dieser fehlermeldung etwas anfangen und kann mir sagen was man dagegen tun kann???

herzlichen dank im voraus für eure hilfe !!!
rudolf kiepetz

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: application.caller
25.09.2002 14:21:43
JürgenR
Hi Rudolf,

was willst du denn machen. Bei dir wird zum einen keine Application gecallt und zum anderen muss nach Caller noch was kommen, wie .Address, .Name

Gruß
Jürgen

Re: application.caller
25.09.2002 14:30:45
rudolf kiepetz
erst mal herzlichen dank für deine schnelle antwort.
das makro sollte folgendes machen:
wenn in spalte "j" ein datum eingegeben wird, soll dieses datum in spalte "k", selbe zeile kopiert werden. weiters soll ein datum aus, selbe zeile spalte "q" in selbe zeile, spalte "r" kopiert werden.

hoffentlich ist mein geschreibsel verständlich !
mfg.
rudi

Anzeige
Re: application.caller
25.09.2002 14:48:41
JürgenR
Hi,

wenn das automatisch bei einer Eingabe in J oder Q geschehen soll, dann brauchst du einen Code für das Tabellenblatt:

Diesen Code nicht in ein Modul packen, sondern links auf den entsprechenden Tabellennamen doppelklicken und den code rechts rein. Sollten in J und/oder Q auch andere Dinge als Daten eingegeben werden, musst du dich nochmal melden.

Gruß
Jürgen

Anzeige
Re: application.caller
26.09.2002 06:45:10
rudolf kiepetz
ja so funktioniert´s - herzlichen dank !!
;
Anzeige

Infobox / Tutorial

Anwendung von Application.Caller in Excel VBA


Schritt-für-Schritt-Anleitung

Um das Excel VBA Application.Caller korrekt zu verwenden, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel.
  2. Füge ein neues Makro hinzu:

    • Klicke auf "Einfügen" und wähle "Modul", um ein neues Modul zu erstellen.
  3. Schreibe den VBA-Code:

    Sub datum()
       Dim ac As Range
       Set ac = Application.Caller
    
       ' Hier kannst du die Logik hinzufügen
       If Not IsEmpty(ac) Then
           ac.Offset(0, 1).Value = ac.Value ' Kopiere Datum in die nächste Spalte
       End If
    End Sub
  4. Verwende den richtigen Anwendungsbereich:

    • Stelle sicher, dass das Makro in einem Arbeitsblatt ausgeführt wird, wo Application.Caller einen Wert zurückgibt.
  5. Teste dein Makro:

    • Gebe ein Datum in die gewünschte Zelle ein, um zu sehen, ob das Makro wie gewünscht funktioniert.

Häufige Fehler und Lösungen

Ein häufiger Fehler bei der Verwendung von Application.Caller ist der "application.caller error 2023". Dies kann passieren, wenn:

  • Das Makro nicht im richtigen Kontext ausgeführt wird: Stelle sicher, dass du es im richtigen Arbeitsblatt-Event ausführst, z.B. Worksheet_Change.

  • Der Caller Wert nicht definiert ist: Du kannst dies überprüfen, indem du sicherstellst, dass deine Funktion nicht in einem Modul, sondern im Code des Arbeitsblatts steht.

Um den Fehler zu beheben, kannst du den folgenden Code verwenden:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("J:J")) Is Nothing Then
        Call datum
    End If
End Sub

Alternative Methoden

Wenn du Application.Caller nicht verwenden möchtest, kannst du auch direkt auf die Zellen zugreifen:

Sub Alternative_Methode()
    Dim cell As Range
    For Each cell In Range("J1:J100") ' Ändere den Bereich nach Bedarf
        If Not IsEmpty(cell) Then
            cell.Offset(0, 1).Value = cell.Value ' Kopiere Datum
        End If
    Next cell
End Sub

Praktische Beispiele

Hier ist ein praktisches Beispiel, das die Verwendung von Application.Caller demonstriert:

  1. Zelle J1 bearbeiten: Wenn du ein Datum in Zelle J1 eingibst, wird das Datum automatisch in Zelle K1 kopiert.
  2. Zelle Q1 bearbeiten: Wenn du ein Datum in Zelle Q1 eingibst, wird das Datum in Zelle R1 kopiert.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("J:J")) Is Nothing Then
        Target.Offset(0, 1).Value = Target.Value
    ElseIf Not Intersect(Target, Me.Range("Q:Q")) Is Nothing Then
        Target.Offset(0, 1).Value = Target.Value
    End If
End Sub

Tipps für Profis

  • Verwende .Address: Wenn du den genauen Zellbezug benötigst, kannst du Application.Caller.Address verwenden, um die Adresse der Zelle zu erhalten.

  • Fehlerbehandlung hinzufügen: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Makro auch bei unerwarteten Eingaben stabil bleibt.

  • Dokumentiere deinen Code: Kommentiere deinen VBA-Code, um die Funktionsweise für zukünftige Referenzen verständlich zu machen.


FAQ: Häufige Fragen

1. Was ist Application.Caller?
Application.Caller ist eine Methode in Excel VBA, die den Bezug der Zelle zurückgibt, die das Makro aufgerufen hat.

2. Warum bekomme ich den Fehler "application.caller error 2023"?
Dieser Fehler tritt auf, wenn Application.Caller in einem Kontext verwendet wird, wo kein gültiger Zellbezug vorhanden ist. Stelle sicher, dass du das Makro im richtigen Arbeitsblatt-Event ausführst.

3. Kann ich Application.Caller in einem Modul verwenden?
Es wird empfohlen, Application.Caller in einem Arbeitsblatt- oder Workbook-Event zu verwenden, da es den Bezug zur Zelle benötigt, die das Makro ausgelöst hat.

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