Gibt es tatsächlich eine benutzerdefinierte Funktion die in einber Tabellenzelle aufgerufen wird, und ein Makro oder ist hier Funktion und Makro frei formuliert und eigentlich ein- und dasselbe?
In diesen Fall , ja .
Die Macro's sind im Dokument selbst gespeichert .
Hier die beteidigten Marco's
Code: Alles auswählen
Sub Main
'bei öffnen der mappe starten
doc=stardesktop.currentcomponent
myView = doc.CurrentController
.
.
.
.
End Sub
Es folgendie drei Macro's für die Tabellenfunction
Dieses Mrcro steht in der Tabelle
=autoh(E11;E7)
Code: Alles auswählen
function autoh(bem as string,dat as integer)
'dat aus der zeile datum funtion nur ausführen wenn dat eine zahl ist
'function für die zeile Gearbeitet
'autoh=gearbeitet
'bem aus zeile Bemerkung/eingabe
if isNumeric(dat) and (dat <> 0) then 'datum if not leer
'msgbox dat
autoh=zerl(bem,1)
else
autoh=0
endif
end function
Die zwei folgenden Mcro's machen den rest
das Marco" Zerl" wird von "autoh" aufgerufen
Code: Alles auswählen
function zerl(bem1 as string,spalte as integer) as single
'zerlegt die eingabe>>>
'bem1 = zeile eingabe
'spalte = [1fürGearbeitet 2fürNachtstunden ] zurückgeben
'zerl =stunden
'InStr (SearchString, MyString)
dim p as integer
'on error goto fehler1
'leere bem1 ?????
if bem1="" then
zerl=0
else
if IsNumeric(Left(bem1, 1)) then 'zahl
p=InStr (bem1, "#")
if p=0 then
if isNumeric(bem1) and spalte=1 then 'nur eine zahl ;spalte gearbeitet
zerl=bem1
else
zerl=0
endif
else
if spalte=1 then
'Gearbeitet
zerl=left(bem1,p-1)
else
'nachtstunden
zerl=right(bem1,len(bem1)-p)
endif
endif
else
'kürzel
zerl=staus(spalte,bem1)
endif
endif
on error goto 0
exit function
fehler1:
msgbox "Eingabe Fehler "
zerl=0
on error goto 0
end function
Das Macro "staus " wird von "zerl" aufgerufen und verursacht den Fehler .Dieses Macro greift auf eine andere Tabelle zu
Code: Alles auswählen
function staus (spalte1 as integer,kuerzel as string) as single
'zur auswertung der tabelle kürzel
'spalte1 = aus welcher spalte die stunden zurückgegeben werden 1fürGearbeitet 2fürNachtstunden
'kuerzel = das zu suchende kürzel
'staus = stunden 0 bei nicht gefunden
'urbaubsstunden?`!?!=?!?!?!
dim cell as object,sheet as object
dim count as integer,ex as integer
dim kv as string
count=1
ex=0
'on error goto fehler2
sheet=doc.sheets.GetByName("kürzel") 'Hier dürfte die Fehlermeldung ausgelöst werden
do
cell=sheet.GetCellByPosition(0,count)
kv=cell.string
' msgbox "kv="+kv+"kürzel"+kuerzel
if kv=kuerzel then
'gefunden
cell=sheet.getcellbyposition(spalte1,count)
'urlaubsstunden ????????!!!!!!!!
'wenn cell.value <0 ist kein wert zurückgeben !!!! funst net
' if cell.value>=0 then
staus=cell.value
' msgbox "gefunden"+staus
' endif
ex=1
else
if cell.string="" then
ex=1
msgbox " Unbekantes Kürzel" 'nichts gefunden
staus=0
endif
endif
count=count+1
loop until ex=1 'gefunden or leer
on error goto 0
exit function
fehler2:
msgbox " Fehler in Tabelle Kürzel"
staus=0
on error goto 0
end function
gruß Frank
[quote]Gibt es tatsächlich eine benutzerdefinierte Funktion die in einber Tabellenzelle aufgerufen wird, und ein Makro oder ist hier Funktion und Makro frei formuliert und eigentlich ein- und dasselbe? [/quote]
In diesen Fall , ja .
Die Macro's sind im Dokument selbst gespeichert .
Hier die beteidigten Marco's
[code]
Sub Main
'bei öffnen der mappe starten
doc=stardesktop.currentcomponent
myView = doc.CurrentController
.
.
.
.
End Sub[/code]
Es folgendie drei Macro's für die Tabellenfunction
Dieses Mrcro steht in der Tabelle
=autoh(E11;E7)
[code]
function autoh(bem as string,dat as integer)
'dat aus der zeile datum funtion nur ausführen wenn dat eine zahl ist
'function für die zeile Gearbeitet
'autoh=gearbeitet
'bem aus zeile Bemerkung/eingabe
if isNumeric(dat) and (dat <> 0) then 'datum if not leer
'msgbox dat
autoh=zerl(bem,1)
else
autoh=0
endif
end function
[/code]
Die zwei folgenden Mcro's machen den rest
das Marco" Zerl" wird von "autoh" aufgerufen
[code]
function zerl(bem1 as string,spalte as integer) as single
'zerlegt die eingabe>>>
'bem1 = zeile eingabe
'spalte = [1fürGearbeitet 2fürNachtstunden ] zurückgeben
'zerl =stunden
'InStr (SearchString, MyString)
dim p as integer
'on error goto fehler1
'leere bem1 ?????
if bem1="" then
zerl=0
else
if IsNumeric(Left(bem1, 1)) then 'zahl
p=InStr (bem1, "#")
if p=0 then
if isNumeric(bem1) and spalte=1 then 'nur eine zahl ;spalte gearbeitet
zerl=bem1
else
zerl=0
endif
else
if spalte=1 then
'Gearbeitet
zerl=left(bem1,p-1)
else
'nachtstunden
zerl=right(bem1,len(bem1)-p)
endif
endif
else
'kürzel
zerl=staus(spalte,bem1)
endif
endif
on error goto 0
exit function
fehler1:
msgbox "Eingabe Fehler "
zerl=0
on error goto 0
end function
[/code]
Das Macro "staus " wird von "zerl" aufgerufen und verursacht den Fehler .Dieses Macro greift auf eine andere Tabelle zu
[code]
function staus (spalte1 as integer,kuerzel as string) as single
'zur auswertung der tabelle kürzel
'spalte1 = aus welcher spalte die stunden zurückgegeben werden 1fürGearbeitet 2fürNachtstunden
'kuerzel = das zu suchende kürzel
'staus = stunden 0 bei nicht gefunden
'urbaubsstunden?`!?!=?!?!?!
dim cell as object,sheet as object
dim count as integer,ex as integer
dim kv as string
count=1
ex=0
'on error goto fehler2
sheet=doc.sheets.GetByName("kürzel") 'Hier dürfte die Fehlermeldung ausgelöst werden
do
cell=sheet.GetCellByPosition(0,count)
kv=cell.string
' msgbox "kv="+kv+"kürzel"+kuerzel
if kv=kuerzel then
'gefunden
cell=sheet.getcellbyposition(spalte1,count)
'urlaubsstunden ????????!!!!!!!!
'wenn cell.value <0 ist kein wert zurückgeben !!!! funst net
' if cell.value>=0 then
staus=cell.value
' msgbox "gefunden"+staus
' endif
ex=1
else
if cell.string="" then
ex=1
msgbox " Unbekantes Kürzel" 'nichts gefunden
staus=0
endif
endif
count=count+1
loop until ex=1 'gefunden or leer
on error goto 0
exit function
fehler2:
msgbox " Fehler in Tabelle Kürzel"
staus=0
on error goto 0
end function
[/code]
gruß Frank