< návrat zpět

MS Excel


Téma: zjistit a uložit název listu sešitu rss

Zaslal/a 28.12.2021 12:54

Zdravím.

v buňce mám vzorec který vrátí jmeno listu ve kterém je vzorec.

=ZPRAVA(POLÍČKO("názevsouboru");DÉLKA(POLÍČKO("názevsouboru"))-NAJÍT("]";POLÍČKO("názevsouboru")))

Prosím , jak to zapsat do kodu vba?
chci to v něm pak nějak vyhodnotit, např porovnat jméno listu, nebo s tím jménem dál pracovat jako s proměnnou, nebo konstantou.

Pokouším se zkrátka při aktivním listu "listA" zjistit jeho název, a ten název chci natvrdo uložit do jeho buňky, třeba "A1"

Nevěděl by někdo ?
Díky

Zaslat odpověď >

Strana:  1 2   další »
#051800
avatar
...zkoušel jsem ještě :

( zjištuji název sešitu a pak listu)

V bunce vzorec vrátí jméno sešitu:
=POLÍČKO("názevsouboru")
V bunce vzorec vrátí jméno listu:
=ZPRAVA(POLÍČKO("názevsouboru");DÉLKA(POLÍČKO("názevsouboru"))-NAJÍT("]";POLÍČKO("názevsouboru")))

Potřebuju, aby si VBA zjistil to jmeno sešitu a listu přímo a né přečtením vzorce v buňce, jde to ?
Jak to zapsat do makra ?
Děkujicitovat
#051801
avatar
zkouším i :

Range("AL14").FormulaLocal = "=SUMA(AO1:AO9)" 'doplni vzorec a hned ho vypočte, funguje to
To znamená že takto zapsaný vzorec , když vložím makrem do buňky, se hned vypočte.

Tak proč se nevypočte toto ?


Range("AL14").FormulaLocal ="ZPRAVA(POLÍČKO("názevsouboru");DÉLKA(POLÍČKO("názevsouboru"))-NAJÍT("]";POLÍČKO("názevsouboru")))"

' vyhazuje chyby
???citovat
#051802
avatar
Range("AL14").FormulaLocal ="=ZPRAVA(POLÍČKO(""názevsouboru"");DÉLKA(POLÍČKO(""názevsouboru""))-NAJÍT(""]"";POLÍČKO(""názevsouboru"")))"citovat
#051803
avatar
Principiálně asi hledáte příkazy "ActiveWorkbook.Name" a "ActiveSheet.Name".
P.

Např.:
Range("A1").Value = ActiveWorkbook.Name
Range("A2").Value = ActiveSheet.Name
citovat
#051804
avatar
Ano, to je ono.

ale odbočím, jaká jsou tedy pravidla , když chci makrem získat nějaký výsledek funkce/vzorce.
Trápím se s tím, že vzorec si do buňky připravit jakž takž zvládnu, ale potřebuju aby makro umělo ten vzorec vložit do bunky, popř ho rovnou vyhodnotit bez vkládání do bunky.

ty vzorece se musejí nějak jinak psát ?

např v bunce mám vzorec / hledá výskyt "ahoj" jeli v oblasti 7x a v jiné bunce je "1"
'když je X krát neco v oblasti, A někde jinde je něco dopln x, jinak y
=KDYŽ(A((A21=1);(COUNTIFS(A5:A15; "ahoj") =7));"je tam 7xAhoj a 1";"NENI tam 7xAhoj a 1")

a když to píšu do VBA vypadá to takto:
If WorksheetFunction.CountIfs(Range("A5:A15"), "ahoj") = 7 And Range("a21").Value = 1 Then Range("b17").Value = "je tam 7 x ahoj a 1" Else: Range("b17").Value = "NENI tam 7x ahoj a 1"

to je jediný případ kdy se mi to povedlo.
Ale jakýkoliv jiný vzorec mi stále vyhazuje erory

např:tohle mi funguje
Cells(1, 3).Value = WorksheetFunction.CountIfs(Range("c2", "c" & RowsA + 1), "test")

Nechápu použití WorksheetFunction.xxxx
do tohoto příkazu můžu snad vložit jakoukoli funck ne ? ..ale když tam napíšu ten vzorec, nejde to.Musí se to nějak konertovat?citovat
#051805
avatar
v EN syntaxicitovat
#051806
avatar
..jako že to půjde , jen když to napíšu v EN synt .?

A najdu někde, jak se to překládá,do EN ?citovat
#051807
avatar
vidím tedy rozdíl jen že místo jedné " se píše v EN 2 "" ?
to bude stačit ?citovat
#051811
avatar
Zdvojené uvozovky jsou potřeba vždy tam, kde ve výsledném řetězci má být uvozovka.

EN syntaxe např.
https://office.lasakovi.com/excel/funkce/ms-excel-funkce-cz-en/citovat
#051812
avatar
Nechce se mi jít úplně do detailu, máte v tom totiž docela zmatek ;-). Každopádně, když chcete uložit do proměnné výsledek běžné funkce, která je zabudovaná v MS Excel, tak se k tomu využívá příkaz "Application.WorksheetFunction". Tedy žádné uvozovky, rovnítko a české názvy funkcí...
P.

Např.:
Promenna = Application.WorksheetFunction.Sum(Range("A1:A10"))citovat

Strana:  1 2   další »

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