S čím máte konkrétne problém ??? Tu máte nejaké príklady, a jedno konkrétne použitie s objektami Tabuliek na Vašom súbore. Objekt Tabuľka (nie obyč. tabuľka) som použil preto, lebo si myslím, že budete chcieť aby si to vzorec do ďalšieho riadku dopĺňalo samé.
Tak
Tak ?
pravý klik - Hypertextové prepojenie - Miesto v tomto dokumente - v spodnej časti vyberte list, a vo vrchnej zobrazovaný názov - OK.
Alebo maličké makro na prepínače v skupine.
Ako použiť makro? Priradiť ho k tlačítku. Neviem či je to to čo ste chcel. Išiel som podľa popisu, ale nepozdáva sa mi. Xlnc-emu to vysvetlite lepšie, lebo je to také "magické"... Držím palec.
???
To chcete takéto niečo ?
Sub Kopiruj_Click()
Dim SH As Worksheet, Stlpec As Integer, Meno As String
On Error Resume Next
For Each SH In Worksheets
With SH
Meno = .Name
If InStr(1, Meno, "FINAL") > 0 And Meno <> "FINAL" Then
Stlpec = WorksheetFunction.Match(CDbl(Date), .Rows(9), 0)
If Err = 0 Then
With .Cells(9, Stlpec).Resize(.Cells(Rows.Count, Stlpec).End(xlUp).Row - 8)
.Value = .Value
End With
Else
Err.Clear
End If
End If
End With
Next SH
End Sub
Lebo to je zlé riešenie. Čím neskorší produkt, tým viac kontrol bunky E3,a pri každej sa prestupuje z makra do listu (najpomalšia vec).
Čiže na začiatku testov si do premennej uložte hodnotu bunky E3. a testujte premennú.
ALE.
Lepšie bude, ak nebudete testovať po jednom produkte, ale dáte vyhľadať Application.Match alebo WorksheetFunction.Match tú hodnotu bunky v zozname produktov (ten predsa musíte mať, keď ho máte načítaný v bunke E3), a získate index produktu voči zoznamu. Tento index môžete použiť ako parameter procedúry, v ktorej sa bude makro vetviť podľa produktov napr. v konštrukcii Select Case.
Možností bude viacej, ale takýto popis je na riešenie absolútne nedostatočný. Pridajte podstatne viac informácií, počet produktov, počet je ne/menný, makro má každý produkt rovnaké, alebo iné. Je vôbec makro potrebné ? Ak napr. iba načítate z inej tabuľky údaje, dá sa to vzorcami. V príklade voláte rovnaké makro pre oba uvedené produkty .... atď.
Najlepšie urobíte, ak vložíte prílohu.
Skúste trošku pozmeniť makrá na :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Zoznam" Then Exit Sub
If Intersect(Target, Range("G5:AI53")) Is Nothing Then Exit Sub
With Target
Call PopisZmeny(Sh.Name, .Address(0, 0), .Value)
End With
End Sub
a
Sub PopisZmeny(List As String, Poloha As String, Napln As Variant)
Dim User As String
With Application
.EnableEvents = False
User = .UserName
With Sheets("Zoznam")
.Cells(.Cells(1, 7) + 1, 1).Resize(, 5) = Array(Now, List, Poloha, Napln, User)
End With
.EnableEvents = True
End With
End Sub
či sa to nezlepší. Mám tu jeden obdobný problém. Excel pri viac listoch takmer exponenciálne spomaľuje. Aj pri zadávaní údajov, ale najmä pri pridávaní nových listov. Žiaľ som rovnako bezradný. Skúste.
Príliš dobre tú Vašu tabuľku nechápem. Skratky SV, NV sa vo výpise skratiek nenachádzajú? Znamená to snáď že sa má zarátať iba keď je S alebo V, a v druhom stĺpci s NV iba ak je N alebo V ??? To by sa niektoré hodnoty zrátali duplicitne, pretože už je tam kategória N. A čo znamená to "ost.", čo do toho spadá ? Čokoľvek okrem D,S(SV),N(NV),A,N,O,§,"" ?
Do I6 sa má načítať hodnota z tabuľky "zamestnanci" podľa mena zo stĺpca Fond?
Zamestnancov máte 11, ale rozbaľovací zoznam má 12 riadkov. Budú zamestnanci pribúdať ?
Názvy dní (so,ne), sviatkov (sv), a čísla, sa dajú urobiť tak, že sa vyplnia automaticky iba zvolením mesiacu v L3 v Evidence. Sná)ď to nechcete vypisovať každý mesiac ručne.
Súčet dovolenky má o prvý riadok menej, má to tak byť ?
V tých súčtoch v stĺpci B sa môžete rovno odkázať na už vypočítaný rovnaký súčet v riadku 39.
...
Urobil som Vám príklad vzorcov na §hod, §den, D, NV, A, N, O a načítanie mena v B3.
Iba zelené som robil. Skontrolujte si to.
cca +- nejako tak
napr.
Oba kódy fungujú, oba som otestoval.
Prvý má dole obrovské tlačítko Download, kde máte funkčný príklad v .xlsm.
V druhom v novších Officoch (príklad je tuším na 2007) musíte zmeniť deklaráciu z
Dim googleResult As New MSXML2.DOMDocument
Dim googleService As New MSXML2.XMLHTTP
na
Dim googleResult As New MSXML2.DOMDocument60
Dim googleService As New MSXML2.XMLHTTP60
a opäť to funguje.
Testované na 2013 Pro SK x64 / W8.1.1 Pro SK x64.
Googlovanie 1
Googlovanie 2
Ale Google API, ako píšu, má obmedzenie 2500 požiadaviek/deň.
Dajte si prosím tú práce, a vytvorte prílohu so zverejniteľnou časťou kódu, formulára, listu. Jasnovidectvo je na ústupe už pár storočí, takže je problém uhádnuť na čo myslíte. Aspoň názvy procedúr, ktoré postujete by nemali absentovať, aby sme si dali napr do súvisu, že Váš "druhý" kód, teda tretia procedúra je vlastne to volané makro v module, teda napr. "Module1.vyber1 (OznacenySoubor)".
Ten tretí kód, štvrtá procedúra, je divný. Čo má robiť ten vzorec ? Na čo je tam VALUE a INDIRECT ? Nestačí priamy odkaz na zošit ? Veď ak vkladáte vzorec makrom, tak predpokladám, že ho vkladáte pri zmene v tom listboxe. Alebo nie ? A určite nestačí Formula namiesto ArrayFormula ? Bez prílohy ani ranu !
Sub vyber1(OznacenySoubor As String)
Application.Workbooks.Open ("C:\Users\usr1\Desktop\J\" & OznacenySoubor), UpdateLinks:=0
Workbooks(OznacenySoubor).Worksheets("Data").Range("A40:B65").Copy
End Sub
Polepšite sa
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.