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

Makros laufen elend lang

Makros laufen elend lang
08.05.2008 08:33:00
LotharP
Guten morgen,
ich habe in meiner Personl.xls eine ganze Menge Makros.
Unter anderem auch zwei Funktionen die ich ursprünglich in einer anderen Mappe erstellt habe und die dort recht flott gelaufen sind.

Public Function COLORCOUNT(VERGZELL As Range, VERGBER As Range) As Integer
Dim C As Range, i As Integer
i = 0
For Each C In VERGBER
If C.Interior.ColorIndex = VERGZELL.Interior.ColorIndex Then i = i + 1
Next C
COLORCOUNT = i
End Function



Public Function COLORADD(VERGZELL As Range, VERGBER As Range) As Integer
Dim C As Range, i As Integer
For Each C In VERGBER
If C.Interior.ColorIndex = VERGZELL.Interior.ColorIndex Then i = i + C.Value
Next C
COLORADD = i
End Function


Zum Einen laufen diese Funktionen über den Aufruf lange zum Anderen ist der Aufruf auch umständlicher:
=PERSONL.XLS!COLORADD()
Wie kann ich diese Funktion "Bekanntgeben". (Sorry, ich denke das ist jetzt ein bisschen um die Ecke gedacht!?)
aber......alle anderen Funktionen müssen ja auch irgendwo stehen!? Soweit ich mich erinnere kam man damals auch an die Funktionen dran? und konnte diese als Basis benutzen?
Hoffe da weiss jemand bescheid, jedenfalls schonmal vielen Dank im Vorraus für die Mühe!
Gruß
Lothar

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros laufen elend lang
08.05.2008 11:07:00
fcs
Hallo Lothar,
es macht wenig bis keinen Sinn benutzerdefinierte Funktionen in der persönlichen Makroarbeitsmappe zu erstellen und diese dann von anderen Arbeitsmappen aus aufzurufen.
Es gibt mit großer Wahrscheinlichkeit Probleme, sobald die Datei auf einem anderen Rechner bzw. von einem anderen User geöffnet wird, da diese benutzerdefinierten Funktionen dort fehlen.
Die kurze Form des Funktionsaufrufes ist nur innerhalb eines VBA-Projekts bzw. innerhalb der gleichen Datei möglich. Ist die Funktion außerhalb der Datei deklariert, dann muss man Excel schon mitteilen, wo diese zu finden ist, deshalb die andere Syntaxt.
Alle anderen Standardfunktionen sind halt innerhalb der Excelprogrammumgebung so deklariert, dass sie direkt aufgerufen werden können.
Gruß
Franz

Anzeige
AW: Makros laufen elend lang
08.05.2008 12:03:26
LotharP
Hallo Franz, Danke für die Antwort, aber dem hier stimme ich nun gar nicht zu:

es macht wenig bis keinen Sinn benutzerdefinierte Funktionen in der persönlichen Makroarbeitsmappe zu erstellen und diese dann von anderen Arbeitsmappen aus aufzurufen.


Funktionen dienen dazu in jeder Arbeitsmappe bestimmte Aufgaben durchzuführen.
Eine Summe bilden steht in JEDER xls. zur Verfügung!
Daher ist es wohl sinnvoll eine in Excel fehlende Funktion "Global" zur Verfügung zu stellen, damit ich auf diese Funktion zugreifen kann.
Ob nun die Personl.xls der falsche Weg ist mag ja sein, allerdings ist das ja gerade das was ich rauszufinden versuche! Bisher habe ich alles was ich benötige in die Personl.Xls geschrieben.
Ein Makro das automatisch über Lotus die aktuelle Datei verschickt bsw. steht dort.
Frage ist dann, WO DENN SONST?!
Die Gegebenheiten sind schon klar. das habe ich ja auch geschrieben(Personl.xls!.......) aber das "Problem" ist damit nicht gelöst.


Alle anderen Standardfunktionen sind halt innerhalb der Excelprogrammumgebung so deklariert, dass sie direkt aufgerufen werden können.


Ja das ist ja was ich meine, wie gebe ich EXCEL denn diese Deklaration?!
Gruß
Lothar

Anzeige
AW: Makros laufen elend lang
08.05.2008 13:13:34
fcs
Hallo Werner,
alles, was an Prozeduren/benutzerdefinierten Funktionen ausgeführt wird und danach keinen Bezug mehr zu der Arbeitsmappe hat mit/in der es ausgeführt wird, ist in der persönlichen Makroarbeitsmappe sehr gut aufgehoben, z.B. dein Makro zum Versenden der e-mail.
Alle benutzerdefinierten Funktionen, die in den Formeln von Tabellen-Zellen verwendet werden, sind jedoch besser in Modulen der jeweiligen Arbeitsmappe enthalten, weil sonst dass von mir beschriebene Problem beim Öffnen auf anderen Rechnern/durch andere User entsteht.
Es gibt in Excel dann noch die Möglichkeit Addins (xla-Dateien) zu installieren. Mit Addins werden die darin enthaltenen Funktionen dann so auswählbar wie Standard-Funktionen. Aber dass ändert nichts an dem Grundproblem, dass dann das Addin auf jedem Rechner verfügbar gemacht werden und ggf. aktiviert werden muss, auf dem die Arbeitsmappe, in der eine der Funktionen verwendet wird, geöffnet werden soll.
Gruß
Franz

Anzeige
AW: Makros laufen elend lang
08.05.2008 14:54:09
LotharP
Hallo Fritz,
ich bins Lothar! ;-)))
Nein, Scherz beiseite, vielen Dank für die Antwort!
Das Ganze in ein ADD-Inn zu stellen hab' ich zwar auch schonmal dran gedacht, aber ich dachte irgendwie es wäre anders möglich.
Es ist klar das das Addin bekannt gegeben werden muß und das es dann eventuell nicht auf JEDEM Rechner zur Verfügung steht, aber ich denke für meine Belange müsste ich klar kommen und ich werde es versuchen meine Funktionen in einem Addin abzulegen.
Hierzu noch eine Frage:
Die Funktionen haben alle eine Zuordnung zu einem Gebiet. Erstelle ich nun ein Addin in dem Mehrere Funktionen enthalten sind(wenn das überhaupt geht!?) und ich möchte das diese Funktionen einer Gruppe"Selbstdefiniert" oder "Summierungen" zugeordnet werden , muß ich noch etwas beachten/machen?
Ich werd's auf jeden Fall gleich ausprobieren und Danke dir nochmal für deine Mühe!
Grüsse
Lothar

Anzeige
AW: Makros laufen elend lang
08.05.2008 15:51:00
Rudi
Hallo,

(wenn das überhaupt geht!?) 


das geht.


und ich möchte das diese Funktionen einer Gruppe"Selbstdefiniert" oder "Summierungen" zugeordnet werden


das geht nicht.
Sebst geschriebene Funktionen tauchen im Funktionsassistenten immer unter Benutzerdefiniert auf.
Gruß
Rudi

OT benutzerdefinierte Funktionen in andere Gruppe
08.05.2008 16:35:00
Reinhard
Hallo Rudi,
ich muß da wirdersprechen, man kann durchaus Funktonen "verschieben", zumindest sagt das Miachael Schwimmer.
Warum bei mir nur der erste Code klappt aber beim zweiten der Fehler 1004 kommt weiß ich nicht, vielleicht fehlt ein Verweis oder es geht nicht mit XL2000.
Darum Frage noch offen.

Option Explicit
Sub MoveCategory()
Application.MacroOptions _
Macro:="dblRound", _
Description:="Auf- oder abrunden auf Ganzzahlen", _
Category:=1  '1=Finanzmathematisch
End Sub
Sub CreateOwnCategory()
Application.MacroOptions _
Macro:="dblRound", _
Description:="Auf- oder abrunden auf Ganzzahlen", _
Category:="Meine eigene Kategorie"
End Sub


Gruß
Reinhard

Anzeige
AW: Makros laufen elend lang
08.05.2008 16:49:18
fcs
Hallöchen noch einmal,
die Functions aus der XLA werden standardmäßig in der Gruppe Benutzerdefiniert gelistet. Je nach installierten XLA wird es da schnell unübersichtlich.
Die Funktionen kannst du alle in eine xla packen, ggf. in mehrere Module wg. Übersichtlichkeit.
Theoretisch kann man auch eigene Gruppennamen kreieren. Leider (Excel2003) funktioniert das bei mir nur per Makro bei den eingeblendeten Arbeitsmappen - zumindest hab ich keinen anderen Weg gefunden. Die XLA wiederum weigern sich, eingeblendet zu werden. Diese Gruppennamen sind temporär und "verschwinden" beim Schließen der zugehörigen Arbeitsmappe wieder.
Ein weiteres Argument dafür UDFs für Tabellenformeln in der Arbeitsmappe anzulegen, in der sie verwendet wirden.
Codebeispiel:

Sub AddUDFToCustomCategory()
Dim strCat As String
strCat = "Geometrie"
Application.MacroOptions Macro:="Quardervolumen", Category:=strCat
Application.MacroOptions Macro:="Wuerfelvolumen", Category:=strCat
strCat = "Höhere Mathematik"
Application.MacroOptions Macro:="NewtonIntegral", Category:=strCat
Application.MacroOptions Macro:="LaplaceTransformation", Category:=strCat
End Sub
Public Function Quardervolumen(Laenge As Double, Breite As Double, Hoehe As Double) As Double
Quardervolumen = Laenge * Breite * Hoehe
End Function
Public Function Wuerfelvolumen(Laenge As Double, Hoehe As Double) As Double
Wuerfelvolumen = Laenge * Breite * Hoehe
End Function
Public Function NewtonIntegral(varX As Range, varY As Range) As Double
End Function
Public Function LaplaceTransformation(varX As Range, varY As Range) As Variant
End Function


Viel Glück bei der Bastelei.
Franz

Anzeige
AW: Makros laufen elend lang
08.05.2008 17:17:00
Reinhard
Hallo Franz,
deiner Funktion Wuerfelvolumen fehlts an der "Breite" :-))
Okay, ist ja nicht wichtig da nur beispiel.
Was mich interessiert warum kommt bei mir Fehler 1004 bei
Application.MacroOptions Macro:="Quardervolumen", Category:=strCat
liegt das an einem fehlenden Verweis oder an meinem X2000 ?
Gruß
Reinhard

AW: Makros laufen elend lang
08.05.2008 17:41:00
fcs
Hallo Reinhard,
beim Würfel hätte es ja auch die Länge hoch 3 getan.
evtl. ist die Erweiterung der benutzerdefinierten Kategorien eine Neuerung, die erst mit 2003 eingeführt wurde. Weiss ich aber nicht.
Fehlender Verweis eher unwahscheinlich, bei mir sind in der Datei nur die üblichen Verdächtigen:
Excel 11, Office 11 und Forms 2 Objekt Library
Visual Basic for Applications
OLE Automation
aktiviert.
gruß
Franz

Anzeige
AW: Makros laufen elend lang
09.05.2008 10:33:00
LotharP
Hallo Zusammen,
vielen Dank für die rege Beteiligung und die Mühe!
Hat sich der Thread ja noch entwickelt! ;-))
Ich habe leider gerade wieder keine Zeit alles im Detail zu probieren aber beim überfliegen ist mir schon einiges hilfreiches begegnet!
Sobald ich Zeit habe werde ich dran gehen und, jenachdem ob möglich oder nicht, noch antworten!
Da ich auch Excel 2000 habe denke ich werde ich wohl auch auf den beschriebenen Fehler laufen, schaumermoi!
Also vilelen Dank an euch drei!
Gruß
Lothar

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige