die Zeilen mit zeile = Application.Caller.Row
die Spalten mit spalte= Application.Caller.Column
aber wie das Arbeitsblatt ?
.Sheet und .Worksheet funktionieren nicht.
die Zeilen mit zeile = Application.Caller.Row
die Spalten mit spalte= Application.Caller.Column
aber wie das Arbeitsblatt ?
.Sheet und .Worksheet funktionieren nicht.
versuch es mal so:
Application.VBE.SelectedVBComponent.Name
Gruss
Andreas
Wie komme ich an den Namen ?
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
danke.
Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblattname)" im Projektfenster und wähle "Einfügen" > "Modul".
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
Speichere dein Projekt und teste das Makro, indem du einen Doppelklick auf eine Zelle in Blatt "A" machst.
Problem: Der Name des Arbeitsblatts wird als "Tabelle4" angezeigt.
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.
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.
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
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
Application.Caller.Address-Eigenschaft, um die genaue Adresse der Zelle zu erhalten, die das Makro aufgerufen hat.Worksheet_Change oder Worksheet_SelectionChange, um die Interaktivität deiner Excel-Anwendung zu erhöhen.VBE-Objekte zu verwenden, da dies die Lesbarkeit deines Codes beeinträchtigen kann. Halte deinen Code sauber und verständlich.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.