< návrat zpět

MS Excel


Téma: Převzetí LOCAL funkci ve VBA rovnou do proměné rss

Zaslal/a 4.9.2020 11:33

Merlin99Zdravím,
mám dotaz zda je nějak možné převzít LOCAL fukci se kterou pracuju ve VBA rovnou do promene bez toho aniz bych ji musel vracet na list a pak zpet z listu zas do VBA.
Je nutne zachovat LOCAL funkci to ze bych ji mohl prepsat rovnou na VBA funkce vim ale nechce se mi tak se ptam jestli je to mozne pokud ne zacnu se ucit VBA funkce více nu. 5
Dekuji za radu viz příloha 7

Příloha: rar47876_funkce.rar (13kB, staženo 24x)
Zaslat odpověď >

#047877
Merlin99
*chtěl bych výsledek z funkce:
=CONCATENATE(ROK(EDATE(DNES();-1));""_"";KDYŽ(MĚSÍC(EDATE(DNES();-1))>9;MĚSÍC(EDATE(DNES();-1));CONCATENATE(0;MĚSÍC(EDATE(DNES();-1)))))
= 2020_08

vrátit ve VBA do promene DATUMx
bez pouziti listu excelucitovat
#047878
avatar
Mnoho z funkcií obsahuje aj VBA a ďalšie sa dajú volať z Excelu cez WorksheetFunction. Concatenate nepotrebuješ, výraz si vo VBA zložíš cez operátor &citovat
#047879
avatar
Tieto informácie som uviedol pre prípad, keby si chcel byť na seba hrdý, že si to dokázal sám. V opačnom prípade stačí počkať, kým sem dá hotové riešenie elnino. Priame funkcie vba zistíš cez googlecitovat
#047880
elninoslov
Asi iba použiť Evaluate spolu s dočasným vytvorením definovaného názvu, ktorý zabezpečí preklad vzorca pre Evaluate. V reťazci vzorca, treba tak či tak ošetriť úvodzovky ("" namiesto "):
Sub FUNKCE2()
Dim RetVal
Dim LocalFormula As String
Dim LanguageCode As Long

LanguageCode = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
If LanguageCode <> 1029 Then MsgBox "Nemožno vykonať, nesprávny jazyk Excelu.": Exit Sub

LocalFormula = "=CONCATENATE(ROK(EDATE(DNES();-1));""_"";KDYŽ(MĚSÍC(EDATE(DNES();-1))>9;MĚSÍC(EDATE(DNES();-1));CONCATENATE(0;MĚSÍC(EDATE(DNES();-1)))))"


On Error Resume Next
Names("EVALNAMELOCAL").Delete
On Error GoTo 0

Names.Add Name:="EVALNAMELOCAL", RefersToLocal:=LocalFormula
RetVal = Evaluate("EVALNAMELOCAL")
Names("EVALNAMELOCAL").Delete

MsgBox RetVal
End Sub

To samozrejme nemožno použiť 10 000x, lebo to bude pomalé.citovat
#047881
avatar
Možná jsem to špatně pochopil, ale výsledek té funkce má dávat datum vždy o měsíc pozadu?? a to KDYŽ jen kompenzuje 2 místa pro měsíc?
Jestli ano, měl bych jiný postup:
promenna= Format(Application.WorksheetFunction.EDate(Date, -1), "yyyy_mm")citovat
#047884
elninoslov
No to práve píše, že to nechce prepisovať na VBA funkcie. Postup s Name a Evaluate sa dá použiť takmer všeobecne. Ale samozrejme akákoľvek funkcia Excelu sa dá prerobiť do VBA, či už jednoduchšie alebo zložitejšie.citovat
#047888
Merlin99
elninoslov
MASAKR reseni to jsem necekal ze je mozne aani, urco budu mega pouzivat. Děkuji

Dingo
super VBA reseni takto bych se to spravne mel naucit ale asi neni diky elninoslov treba 5

Děkuji pánové za pomoc hezký víkend 1 9 9citovat
#047889
Merlin99
elninoslov
musím napsat jeste jednou a PODEKOVAT todle je VELKA PECKA 5 5 5 5 9 9 DÍKYcitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje