Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
476to480
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
476to480
476to480
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Benutzerdefinierte Funktion macht Unsinn

Benutzerdefinierte Funktion macht Unsinn
30.08.2004 20:06:28
ines
Guten Abend Profis,
ich möchte mit einer benutzerdefinierten Funktion Daten aus einem Datenblatt holen und in Fallblätter eintragen. Dazu habe ich mir eine Funktion programmiert, die auch funktioniert. Leider nur, wenn ich damit auf einem Blatt bleibe. Wenn ich damit auf ein zweites Blatt gehe, die Formeln eintrage und Excel alles berechnet werden mir die Ergebnisse im ersten und den andern Blättern überschrieben. Wie mir scheint, rechnet Excel die Funktionen in den andern Blättern mit Variableninhalten für Zeilen und Spalten, die aus dem zweiten Blatt stammen. Ist übrigens egal, auf welches Blatt ich gehe, es stimmt bei den anderen hinterher immer nicht mehr. Ich habe schon 2 Varianten, aber beide gehen nicht (Fall1a und Fall1b mit holemirwas() und Fall2a und Fall2b mit holemirwas2(Zelle).
https://www.herber.de/bbs/user/10312.xls
Kann mir bitte jemand helfen ?
Danke, Ines

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Benutzerdefinierte Funktion macht Unsinn
30.08.2004 21:42:39
Luschi
Hallo Ines,
wenn man eine selbstgeschriebene Vba-Funktion in mehreren Tabellenblättern einsetzt,
ist Präzision im Ansprechen von Cell- bzw. Range-Bereichen erforderlich.
In Deinem Code steht:
PreisRegZ = Cells(meineZeile, spaltePreisRegZ.Column)
KuNumZ = Cells(meineZeile, spalteKuNumZ.Column)
HoMiWaZ = Cells(1, meineSpalte)
Excel interpretiert Cells(...) bei jedem Funktionsaufruf immer auf das ActiveSheet,
also auf das gerade sichtbare Tabellenblatt und somit steht in allen Tabellen der
selbe Wert für die Funktion.
Deshalb mußt Du es wie folgt machen:
Public Function holemirwas(ByRef AktuelleZelle As Range, Optional Blattname_Datenblatt As String = "Datenblatt") As Variant
Application.Volatile
...
...
Dim tabName As String
Dim ws As Worksheet
'ermitteln des Tabellenname der übergebenen Zelle
tabName=AktuelleZelle.Parent.Name
Set ws = Application.ActiveWorkbook.Worksheets(tabName)
Set spaltePreisRegZ = ws.Rows(1).Find(what:="Rabattstufe")
Set spalteKuNumZ = ws.Rows(1).Find(what:="Kundennummer")
PreisRegZ = ws.Cells(meineZeile, spalteKuNumZ.Column)
HoMiWaZ = ws.Cells(1, meineSpalte)
usw. Damit sind die Zellen eindeutig angesprochen und die Funktion wird die
korrekten Werte liefern. In der 2. Funktion (ohne Übergabeparameter) mußt Du
einfach eine Zelle als Dummy-Parameter übergeben, un den Tabellennamen ermitteln
zu können.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Benutzerdefinierte Funktion macht Unsinn
30.08.2004 22:21:59
ines
Hallo Luschi,
danke schön, funktioniert. Was ähnliches hatte ich in der Variante ohne Parameterübergabe probiert, aber das gab's nicht: application.caller.parent.name. Da bleibe ich bei der Variante mit der Übergabe der eigenen Zelle.
Danke nochmal,
Ines

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige