Hallo Makrospezialisten
Ich hab mir hier mit Hilfe von ->Makro aufzeichnen ,
und (weitesgehend) mit Suchen und Ersetzen ein Makro
gebaut, das Textstrings in der Form von chemischen Summenformeln,
zb.CaCO3, NaCl oder NH4Fe(SO4)2,
in eine scalc-Funktion umstrukturiert,die dann im Tabellenblatt
ausgewertet wird; d.h. zu einer chem. Summenformel wird das entsprechende Molekularewicht errechnet.

Das funktioniert jetzt so,das ich eine chem.Summenformel eingebe und das Makro per Shortcut starte, das Ergebniss wird dann in die Zelle unterhalb ausgegeben.

Meine Frage ist:
 Wie kann ich erreichen das mit "=MOLGEWICHT(A1)"
das Makro aus einer beliebigen Zelle(xy) heraus als Function aufgerufen werden kann, und das Ergebniss in dieser Zelle(xy) ausgegeben wird ?

Danke für entsprechende Tips

Gruß
Werner
Ps. Nachfolgend der (die/das)? Makrocode
    und danach die Liste der rel.Atommassen
   (für diejenigen die es ausprobieren wollen:
    die Liste in eine Tabelle kopieren, und mit Namen
    "relamasse" versehen)

Pss.Entschuldigung für die lange [EMAIL PROTECTED]




REM  *****  BASIC  *****MOLGEWICHT*****


function Molgewicht
rem --Wandelt per Suchen und Ersetzen chemische Summenformeln
'         in scalc Funktionen---------------
rem define variables
dim document   as object
dim dispatcher as object
rem --------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----Fehlmeldungen-durch-nicbt-vorhandene-Regex-verhindern----
dim args4(17) as new com.sun.star.beans.PropertyValue
args4(0).Name = "SearchItem.StyleFamily"
args4(0).Value = 2
args4(1).Name = "SearchItem.CellType"
args4(1).Value = 1
args4(2).Name = "SearchItem.RowDirection"
args4(2).Value = true
args4(3).Name = "SearchItem.AllTables"
args4(3).Value = false
args4(4).Name = "SearchItem.Backward"
args4(4).Value = false
args4(5).Name = "SearchItem.Pattern"
args4(5).Value = false
args4(6).Name = "SearchItem.Content"
args4(6).Value = false
args4(7).Name = "SearchItem.AsianOptions"
args4(7).Value = false
args4(8).Name = "SearchItem.AlgorithmType"
args4(8).Value = 1
args4(9).Name = "SearchItem.SearchFlags"
args4(9).Value = 71680
args4(10).Name = "SearchItem.SearchString"
args4(10).Value = ".*"
args4(11).Name = "SearchItem.ReplaceString"
args4(11).Value = "&(+5"
args4(12).Name = "SearchItem.Locale"
args4(12).Value = 255
args4(13).Name = "SearchItem.ChangedChars"
args4(13).Value = 2
args4(14).Name = "SearchItem.DeletedChars"
args4(14).Value = 2
args4(15).Name = "SearchItem.InsertedChars"
args4(15).Value = 2
args4(16).Name = "SearchItem.TransliterateFlags"
args4(16).Value = 1024
args4(17).Name = "SearchItem.Command"
args4(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "",_ 0,args4())

rem ---Multiplikationszeichen-vor Zahlen setzen------------
dim args5(17) as new com.sun.star.beans.PropertyValue
args5(0).Name = "SearchItem.StyleFamily"
args5(0).Value = 2
args5(1).Name = "SearchItem.CellType"
args5(1).Value = 1
args5(2).Name = "SearchItem.RowDirection"
args5(2).Value = true
args5(3).Name = "SearchItem.AllTables"
args5(3).Value = false
args5(4).Name = "SearchItem.Backward"
args5(4).Value = false
args5(5).Name = "SearchItem.Pattern"
args5(5).Value = false
args5(6).Name = "SearchItem.Content"
args5(6).Value = false
args5(7).Name = "SearchItem.AsianOptions"
args5(7).Value = false
args5(8).Name = "SearchItem.AlgorithmType"
args5(8).Value = 1
args5(9).Name = "SearchItem.SearchFlags"
args5(9).Value = 71680
args5(10).Name = "SearchItem.SearchString"
args5(10).Value = "[1-9][0-9]?[0-9]?"
args5(11).Name = "SearchItem.ReplaceString"
args5(11).Value = "*&"
args5(12).Name = "SearchItem.Locale"
args5(12).Value = 255
args5(13).Name = "SearchItem.ChangedChars"
args5(13).Value = 2
args5(14).Name = "SearchItem.DeletedChars"
args5(14).Value = 2
args5(15).Name = "SearchItem.InsertedChars"
args5(15).Value = 2
args5(16).Name = "SearchItem.TransliterateFlags"
args5(16).Value = 1024
args5(17).Name = "SearchItem.Command"
args5(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "",_ 0,args5())

rem -Elementkürzel in SVERWEIS-Formel einpacken '
' !!benötigt eine Atommassenliste mit Namen '"relamasse"!!---------------------------------------
dim args6(17) as new com.sun.star.beans.PropertyValue
args6(0).Name = "SearchItem.StyleFamily"
args6(0).Value = 2
args6(1).Name = "SearchItem.CellType"
args6(1).Value = 1
args6(2).Name = "SearchItem.RowDirection"
args6(2).Value = true
args6(3).Name = "SearchItem.AllTables"
args6(3).Value = false
args6(4).Name = "SearchItem.Backward"
args6(4).Value = false
args6(5).Name = "SearchItem.Pattern"
args6(5).Value = false
args6(6).Name = "SearchItem.Content"
args6(6).Value = false
args6(7).Name = "SearchItem.AsianOptions"
args6(7).Value = false
args6(8).Name = "SearchItem.AlgorithmType"
args6(8).Value = 1
args6(9).Name = "SearchItem.SearchFlags"
args6(9).Value = 71680
args6(10).Name = "SearchItem.SearchString"
args6(10).Value = "[A-Z][a-z]?"
args6(11).Name = "SearchItem.ReplaceString"
args6(11).Value = "+SVERWEIS("+CHR$(34)+"&"+CHR$(34)+";relamasse;3;0)"
args6(12).Name = "SearchItem.Locale"
args6(12).Value = 255
args6(13).Name = "SearchItem.ChangedChars"
args6(13).Value = 2
args6(14).Name = "SearchItem.DeletedChars"
args6(14).Value = 2
args6(15).Name = "SearchItem.InsertedChars"
args6(15).Value = 2
args6(16).Name = "SearchItem.TransliterateFlags"
args6(16).Value = 1024
args6(17).Name = "SearchItem.Command"
args6(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "",_ 0,args6())

rem -Ersetzen von "(+"durch"+("--Richtigstellung der Vorzeichen------------------------------------------
dim args7(17) as new com.sun.star.beans.PropertyValue
args7(0).Name = "SearchItem.StyleFamily"
args7(0).Value = 2
args7(1).Name = "SearchItem.CellType"
args7(1).Value = 1
args7(2).Name = "SearchItem.RowDirection"
args7(2).Value = true
args7(3).Name = "SearchItem.AllTables"
args7(3).Value = false
args7(4).Name = "SearchItem.Backward"
args7(4).Value = false
args7(5).Name = "SearchItem.Pattern"
args7(5).Value = false
args7(6).Name = "SearchItem.Content"
args7(6).Value = false
args7(7).Name = "SearchItem.AsianOptions"
args7(7).Value = false
args7(8).Name = "SearchItem.AlgorithmType"
args7(8).Value = 0
args7(9).Name = "SearchItem.SearchFlags"
args7(9).Value = 71680
args7(10).Name = "SearchItem.SearchString"
args7(10).Value = "(+"
args7(11).Name = "SearchItem.ReplaceString"
args7(11).Value = "+("
args7(12).Name = "SearchItem.Locale"
args7(12).Value = 255
args7(13).Name = "SearchItem.ChangedChars"
args7(13).Value = 2
args7(14).Name = "SearchItem.DeletedChars"
args7(14).Value = 2
args7(15).Name = "SearchItem.InsertedChars"
args7(15).Value = 2
args7(16).Name = "SearchItem.TransliterateFlags"
args7(16).Value = 1024
args7(17).Name = "SearchItem.Command"
args7(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "",_ 0,args7())

rem --Entfernen des Fehlerabfangstrings aus args4-----
dim args8(17) as new com.sun.star.beans.PropertyValue
args8(0).Name = "SearchItem.StyleFamily"
args8(0).Value = 2
args8(1).Name = "SearchItem.CellType"
args8(1).Value = 1
args8(2).Name = "SearchItem.RowDirection"
args8(2).Value = true
args8(3).Name = "SearchItem.AllTables"
args8(3).Value = false
args8(4).Name = "SearchItem.Backward"
args8(4).Value = false
args8(5).Name = "SearchItem.Pattern"
args8(5).Value = false
args8(6).Name = "SearchItem.Content"
args8(6).Value = false
args8(7).Name = "SearchItem.AsianOptions"
args8(7).Value = false
args8(8).Name = "SearchItem.AlgorithmType"
args8(8).Value = 0
args8(9).Name = "SearchItem.SearchFlags"
args8(9).Value = 71680
args8(10).Name = "SearchItem.SearchString"
args8(10).Value = "+(*5"
args8(11).Name = "SearchItem.ReplaceString"
args8(11).Value = ""
args8(12).Name = "SearchItem.Locale"
args8(12).Value = 255
args8(13).Name = "SearchItem.ChangedChars"
args8(13).Value = 2
args8(14).Name = "SearchItem.DeletedChars"
args8(14).Value = 2
args8(15).Name = "SearchItem.InsertedChars"
args8(15).Value = 2
args8(16).Name = "SearchItem.TransliterateFlags"
args8(16).Value = 1024
args8(17).Name = "SearchItem.Command"
args8(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "",_ 0,args8())

rem --Führendes + Zeichen durch = ersetzen-------------------------
dim args9(17) as new com.sun.star.beans.PropertyValue
args9(0).Name = "SearchItem.StyleFamily"
args9(0).Value = 2
args9(1).Name = "SearchItem.CellType"
args9(1).Value = 1
args9(2).Name = "SearchItem.RowDirection"
args9(2).Value = true
args9(3).Name = "SearchItem.AllTables"
args9(3).Value = false
args9(4).Name = "SearchItem.Backward"
args9(4).Value = false
args9(5).Name = "SearchItem.Pattern"
args9(5).Value = false
args9(6).Name = "SearchItem.Content"
args9(6).Value = false
args9(7).Name = "SearchItem.AsianOptions"
args9(7).Value = false
args9(8).Name = "SearchItem.AlgorithmType"
args9(8).Value = 1
args9(9).Name = "SearchItem.SearchFlags"
args9(9).Value = 71680
args9(10).Name = "SearchItem.SearchString"
args9(10).Value = "^+"
args9(11).Name = "SearchItem.ReplaceString"
args9(11).Value = "="
args9(12).Name = "SearchItem.Locale"
args9(12).Value = 255
args9(13).Name = "SearchItem.ChangedChars"
args9(13).Value = 2
args9(14).Name = "SearchItem.DeletedChars"
args9(14).Value = 2
args9(15).Name = "SearchItem.InsertedChars"
args9(15).Value = 2
args9(16).Name = "SearchItem.TransliterateFlags"
args9(16).Value = 1024
args9(17).Name = "SearchItem.Command"
args9(17).Value = 3

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "",_ 0,args9())

'Der Summenformelstring ist zu einer Rechenfunktion geworden,
'und wird von Scalc ausgerechnet
end function

REM ****** ENDE**********BASIC


Atommassenliste:"relamasse"

H       Wasserstoff     1,01
He      Helium  4
Li      Lithium 6,94
Be      Beryllium       9,01
B       Bor     10,81
C       Kohlenstoff     12,01
N       Stickstoff      14,01
O       Sauerstoff      16
F       Fluor   19
Ne      Neon    20,18
Na      Natrium 22,99
Mg      Magnesium       24,31
Al      Aluminium       26,98
Si      Silicium        28,09
P       Phosphor        30,97
S       Schwefel        32,07
Cl      Chlor   35,45
K       Kalium  39,1
Ar      Argon   39,95
Ca      Calcium 40,08
Sc      Scandium        44,96
Ti      Titan   47,88
V       Vanadium        50,94
Cr      Chrom   52
Mn      Mangan  54,94
Fe      Eisen   55,85
Ni      Nickel  58,69
Co      Cobalt  58,93
Cu      Kupfer  63,55
Zn      Zink    65,39
Ga      Gallium 69,72
Ge      Germanium       72,61
As      Arsen   74,92
Se      Selen   78,96
Br      Brom    79,9
Kr      Krypton 83,8
Rb      Rubidium        85,47
Sr      Strontium       87,62
Y       Yttrium 88,91
Zr      Zirconium       91,22
Nb      Niob    92,91
Mo      Molybdän        95,94
Tc      Technetium      98,91
Ru      Ruthenium       101,07
Rh      Rhodium 102,91
Pd      Palladium       106,42
Ag      Silber  107,87
Cd      Cadmium 112,41
In      Indium  114,82
Sn      Zinn    118,71
Sb      Antimon 121,75
I       Iod     126,9
Te      Tellur  127,6
Xe      Xenon   131,29
Cs      Cäsium  132,91
Ba      Barium  137,33
La      Lanthan 138,91
Ce      Cer     140,12
Pr      Praseodym       140,91
Nd      Neodym  144,24
Pm      Promethium      146,92
Sm      Samarium        150,36
Eu      Europium        151,97
Gd      Gadolinium      157,25
Tb      Terbium 158,93
Dy      Dysprosium      162,5
Ho      Holmium 164,93
Er      Erbium  167,26
Tm      Thulium 168,93
Yb      Ytterbium       173,04
Lu      Lutetium        174,97
Hf      Hafnium 178,49
Ta      Tantal  180,95
W       Wolfram 183,85
Re      Rhenium 186,21
Os      Osmium  190,2
Ir      Iridium 192,22
Pt      Platin  195,08
Au      Gold    196,97
Hg      Quecksilber     200,59
Tl      Thallium        204,38
Pb      Blei    207,2
Bi      Bismut  208,98
Po      Polonium        208,98
At      Astat   209,99
Rn      Radon   222,02
Fr      Francium        223,02
Ra      Radium  226,03
Ac      Actinium        227,03
Pa      Protactinium    231,04
Th      Thorium 232,04
Np      Neptunium       237,05
U       Uran    238,03
Am      Americium       243,06
Pu      Plutonium       244,06
Cm      Curium  247,07
Bk      Berkelium       247,07
Cf      Californium     251,08
Es      Einsteinium     252,08
Fm      Fermium 257,1
Md      Mendelevium     258,1
No      Nobelium        259,1
Lr      Lawrencium      260,11
Rf      Rutherfordium   261,11
Db      Dubnium 262,11
Bh      Bohrium 262,12
Sg      Seaborgium      263,12
Hs      Hassium 265
Mt      Meitnerium      266


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Antwort per Email an