Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  3 4 5 6 7 8 9 10 11   další » ... 68

Makro MojeMakro pracuje se dvěma parametry - jméno a datum.
Sub MojeMakro(ByRef Jmeno As String, ByRef Datum As Date) Které mu předá kód uvedený v modulu prvního listu.
Private Sub Worksheet_Change(ByVal Target As Range) Target je některá z kontrolovaných (spouštěcích) buněk prvního listu ve sloupci E - tedy ta, do které zapisuješ datum např. E5
Tedy volání
Call MojeMakro(Target.Offset(, -3).Value, Target.Value)Target.Offset(, -3).Value = jméno (E5 posunutá o 3 doleva, tedy hodnota buňky B5)
Target.Value = datum (hodnota buňky E5)
Tedy pro buňku E5
Call MojeMakro(Renata, 12.10.2023)

http://gymzv.sk/~vyuka/informatika/excel/excelentne/chipex05/08/excel_vba_funkce.html
zaměř se na "Předávání parametrů obecně"

rng je pouze jméno proměnné, můžeš si jí nazvat jak chceš třeba TatkaSmoula

Resize, offset viz
https://office.lasakovi.com/excel/vba-listy-bunky/excel-vba-resize-offset/#99

Třeba takto: viz soubor
Dej si pozor na zápis dat, jména byla zadána s počáteční mezerou - odstranil sem.

Vyzkoušej tohle:
? Application.WorksheetFunction.VLookup("15.2", Range("Kalendář1"), 2, 0)
? Application.VLookup("15.2", Range("Kalendář1"), 2, 0)

upraveno

Například:

Cells(1, 2).Value = Year(Date)

Řešení pomocí makra. Oba soubory musí být ve společné složce, aby na sebe "viděly" a nebylo nutné při každém spuštění zdrojový soubor vybírat ručně.

Ne Jedině použít vlastní UserForm.

Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(1, 4).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Možná kecám, nemám jak ověřit, sem na telefonu. Ale nějak se nemůžu zbavit dojmu, že proměnná musí být v ClassModule, aby byla viditelná ve všech modulech.

EDIT
Tak kecám 7
Pro použití proměnné ve všech modulech stačí její deklaraci uvést jako PUBLIC nebo GLOBAL. Tedy na začátek modulu
GLOBAL globValue as long
To použití ClassModule bylo pro jiný případ (který si už samozřejmě nepamatuju), a nedaří se mi to dohledat.

Takže Ti nevadí, že makro pracuje pomalu a chceš ho ještě zpomalit?

Další varianta pomocí VBA

Tak sem si přečetl Jirkův kód, poposednul si a nejspíš pochopil záměr.
Výsledek je v příloze. Kód se nachází v modulu, místo jmen jednotlivých listů, jsou použity CodeName listů. Když se rozhodneš listy přejmenovat nebude to mít vliv na kód a nedojde k havárii.

PS: Na Jirkův popud upravená příloha 1

Do sešitu sem se koukal, ale přiznám se, že sem vůbec nepochopil jak to má fungovat.
Tak jen k té deklaraci pole. Velikost pole se mění příkazem ReDim
Index pole začíná na indexu 0.
Tedy:

Dim MyArray()
Dim Pocet as Integer
Pocet = 4
ReDim MyArray (Pocet) 'vytvoří pole o pěti "položkách" (0 až 4)

myarray = Sheets("List1").Range("A1:A5").Value


Strana:  1 ... « předchozí  3 4 5 6 7 8 9 10 11   další » ... 68

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

náhled web stránek v Excelu

elninoslov • 23.2. 17:38

náhled web stránek v Excelu

elninoslov • 23.2. 11:17

náhled web stránek v Excelu

zdena • 23.2. 10:01

Timeplan

CMM-Team • 23.2. 9:21

Nechci při importu odebírat prázdné řádky

elninoslov • 23.2. 9:19

náhled web stránek v Excelu

elninoslov • 23.2. 9:13

náhled web stránek v Excelu

zdena • 22.2. 17:08