Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1080to1084
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
Inhaltsverzeichnis

VBA Formel im Modul

VBA Formel im Modul
19.06.2009 11:33:32
Fred
Hallo liebe Profis,
Ich bekomme da was nicht hin.
Ausgangspunkt: Mehrere Exeldateien mit vielen Blättern
Ziel: neue Datei, die aus den anderen Dateien je nur ein Blatt mit der Funktion(Berechnung) des Blattes übernimmt
Problem 1 : Blatt heisst in allen Dateien gleich; nach Umbenennung funktioniert Berechnung nicht
Problem 2 : selbst wenn ein Blatt den Namen behält, funktioniert die Berechnung nur für eine umbenannte Kopie des gleichen Blattes; nicht für Blätter aus anderen Dateien
VBA Formel ist unter Modul 1 gespeichert. Keine VBA-Codes in einzelnen Blättern...
Wie bekomme ich dem Code beigebracht, dass er auch auf den eingefügten, umbenannten Blättern funktioniert?
Beispieldatei hier:
https://www.herber.de/bbs/user/62568.xls
VBA Kennwort ist "1"
Danke für Hilfe im Voraus...

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Formel im Modul
19.06.2009 15:19:08
Fred
traut sich hier keiner ran? Bin traurig
AW: VBA Formel im Modul
19.06.2009 15:36:35
Wolli
Ich schau ja schon.
AW: VBA Formel im Modul
19.06.2009 15:55:07
Wolli
Hallo Fred, tut mir Leid, in der Kürze der Zeit für mich nicht nachzuvollziehen. Eine Funktion, die in einem Modul gespeichert ist, müsste meines Erachtens in allen Blättern der Arbeitsmappe funktionieren, egal ob die Blätter neu hinzugekommen sind oder umbenannt wurden.
Der Name des Blattes, aus dem Daten gezogen werden, ist in der Funktion fest verdrahtet: Wenn ein Blatt "Pyramid Questions" heißt, wird es verwendet.
Ich lasse die Frage offen und wünsche viel Glück und ein schönes W.E.!
Gruß, Wolli
Dürfte sich erledigt haben, Wolli! Gruß owT
19.06.2009 16:21:48
Luc:-?
:-?
Na weeßte, meen Lieba, jelbe Schrift uff...
19.06.2009 15:54:37
Luc:-?
...jelbem Hintergrund...!
Kein Wunder, dass du nichts siehst bei der bedingten Formatierung!
Ansonsten fkt die udF FCalculateDenom schon, obwohl mir ihr Aufbau nicht sonderlich gefällt und der der Tabelle schon gar nicht. Was sollen da die völlig unmotivierten verbundenen Zellen? Wenn man was größer darstellen will, vergrößert man Zeilenhöhe u/o Spaltenbreite! So wie hier muss die udFkt zwischendurch mit Leerzellen rechnen, was bei der darin enthaltenen Kumulation zu keinem Fehler führt. Wäre es eine Multiplikation oder gar Division, würde wohl nichts Sinnvolles herauskommen.
Fazit: So etwas macht man NICHT! Basta!
Gruß Luc :-?
Anzeige
AW: Na weeßte, meen Lieba, jelbe Schrift uff...
19.06.2009 16:34:40
Fred
Hallo Luc,
...nicht sooo schnell...
Ich habe extra nicht ganz so weit ausgeholt bei der Tabelle - die ist mir so vorgegeben worden und ich bin völlig bei Dir bezügl. der Funktionalität. Die aber darf ich nicht ändern, weil die Ergebnisse aus der (neuen) Tabelle wieder in die alten Dateien kopiert werden müssen. Genau genommen bin ich der "user", der Daten zusammen fassen soll und neue Überblicke aus den "Mutterdateien" erstellt.
Also wegen Aufbau und verbundenen Zellen mache ich mir keine Gedanken - das ist erst der zweite Schritt bei der Formatierung der Tabellen für mich.
Was ist "udFkt" und was meinst Du mit "dass ich nichts sehe" - sollte ich erst mal die bedingten Formatierungen rausschmeißen?
Fred
Anzeige
AW: Na weeßte, meen Lieba, jelbe Schrift uff...
19.06.2009 17:19:06
Fred
Hallo Luc (und alle anderen, die helfen wollen...),
habe nochmal eine Datei eingestellt und ein paar kleinere Erklärungen auf einem Tabellenblatt hinterlegt, die vielleicht helfen.
https://www.herber.de/bbs/user/62578.xls
Manchmal hat man einfach ein Brett vor dem Kopf und dadurch fällt es schwer, ein Problem "tief genug" darzustellen. Hoffe, dass diese Datei eher erklären kann...
Bitte Formatierungen, Schriftgrößen und ähnliches bei der Betrachtung vernachlässigen. Das bekomme ich alles noch "hübsch". Erst mal muss das Ding richtig rechnen. d.h. wenn "3" in allen Listboxen steht, muss oben "100%" als Ergebnis erscheinen. Und das funktioniert zur Zeit nur bei den ersten beiden Blättern, obwohl auf dem letzten Blatt das Gleiche System hinterlegt ist...
MfG
Fred
Anzeige
Ich weiß absolut nicht, was du willst,...
19.06.2009 18:48:40
Luc:-?
...Fred;
Es ist auf MGM eben nicht das "gleiche System hinterlegt" wie auf den anderen Tabb. Im Ggsatz zu den 1. beiden Tabb fehlt hier die Zeile, die in der letzten Spalte in N15 den Verweis auf J15 enthält. Dadurch ergibt sich in N26 1,00, obwohl die Fmln in N18:N25 nur NA liefern, da ihre Bezüge kaputt sind (Fehlerwert #BEZUG!). So kommt mit N14:=TEXT((N26);"#0%") natürlich 100% heraus. In MGM wird nur NA geliefert, da kann in Q27 natürlich nicht 1 rauskommen und somit auch nicht 100% in Q17 erscheinen, falls das das "Problem" sein sollte. Mit der udF (userdefinedFunction im VBA-Modul hat das also nichts zu tun, mehr mit deinen "guten" xlKenntnissen... :->
Dir wurde doch schon gesagt, dass eine sonst fktsfähige udF wie eine xlStandardfkt auch auf anderen Blättern fkt, wenn ihre Argumente dann noch stimmen. Es liegt also nur an dir, das zu gewährleisten...
Gruß Luc :-?
PS: Mit neuen Fragen und Mappen-UpLoads erst melden, wenn die Bezüge der Fmln i.O. sind!
Anzeige
Außerdem kann ich in der Mappe keine...
19.06.2009 18:53:01
Luc:-?
..."ListBox" entdecken. Bist du dir sicher wirklich eine solche zu meinen?
Luc :-?
AW: Na weeßte, meen Lieba, jelbe Schrift uff...
19.06.2009 19:01:27
Fred
...ich bin wieder ein Stück weiter durch Ausprobieren.
2 konkrete Fragen habe ich - die erste betrifft den VBA Code mit der Formel:

Function FCalculateDenom(strRatePercCol As String, rngUserResponse As Range)
'Application.Volatile
Dim rngUserRespCell As Range
Dim rngRatePercCell As Range
Dim varFinalValue As Variant
Dim varMaxUserRespCodeValue
varFinalValue = 0
varMaxUserRespCodeValue = 3
strQuestionaireName = "Pyramid Questions"
For Each rngUserRespCell In rngUserResponse
If rngUserRespCell.Value  "NA" Then
Set rngRatePercCell = Sheets(strQuestionaireName).Range(strRatePercCol & CStr( _
rngUserRespCell.Row))
varFinalValue = varFinalValue + rngRatePercCell.Value
End If
Next rngUserRespCell
FCalculateDenom = varFinalValue * varMaxUserRespCodeValue
End Function


Die Zeile:
strQuestionaireName = "Pyramid Questions"
benennt das Tabellenblatt, auf dem die Berechnung über VBA laufen soll - ok, habe ich verstanden...
Nach Umbenennen auf ein anderes Blatt in dieser Zeile rechnet dementsprechend das ander Blatt richtig.
Erste Frage: Was muss in den Code rein (oder raus...) dass diese Berechnung in allen anderen Blättern auch funktioniert?
Zweite Frage (und das muss mir mal wirklich jemand erklären...): In Exel selbst kann man per F9 die Berechnung aktualisieren. Wenn jetzt die Umbenennung in VBA in b esagter Zeile stattgefunden hat, ist ja die Berechnung auf dem nicht genannten Blatt hin. Nach "Rückbenennung und F9 tut sich erst mal nichts. Erst nach Ändern der Werte in den jeweiligen Zellen rechnet das Blatt wieder richtig.
Muss ich also Berechnungen über VBA Code anders als mit F9 aktualisieren?

Anzeige
Wenn ich etwas nicht leiden kann, ist es...
20.06.2009 05:18:40
Luc:-?
...das unbedachte Übernehmen eines speziellen Betreffs, Fred,
den kann man nämlich auch überschreiben, sonst wirkt das wie Nachäffen...!
zu 1.: Ändere den udF-Kopf auf Function FCalculateDenom(strQuestionaireName As String, strRatePercCol As String, rngUserResponse As Range), dann kannst du den Blattnamen in der udF mit angeben. Er war ohnehin nicht deklariert. Mit Option Explicit am Modulanfang würde dir VBA das auch nicht durchgehen lassen! Dann kannst du auch gleich noch die übrigen fehlenden Variablendeklarationen nachholen.
zu 2.: Blatt neu berechnen sollte eher Wirkung zeitigen. Ansonsten kannst du ja auch die 1. auskommentierte Codezeile reaktivieren, aber das hat oft andere als erhoffte Wirkung. Ohne diese Zeile rechnet die udF nur, wenn sich ihre Argumente ändern. Das ist bei den meisten xlStddFktt auch nicht anders.
Gruß Luc :-?
Anzeige
Das funktioniert!
22.06.2009 08:41:30
Fred
Hallo Luc,
Danke für die Lösung - das klappt! (Hurra!!) Problem ist gelöst.
PS: Das mit dem Betreff tut mir leid - war mir nicht bewusst - weiss es in Zukunft besser.
Fred
Na also, die einfachste Lösung ist oft die...
23.06.2009 03:26:23
Luc:-?
...beste, wenn auch nicht immer die eleganteste, Fred... ;-)
Gruß Luc :-?
PS: Das mit dem Betreff ist auch manchen "alten Hasen" schnurz! WF ärgert sich darüber auch schon seit der INet-Steinzeit... ;-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige