elninoslov napsal/a:
"Kivan" napsal/a:a pak že to nejde
O čom to hovoríte ??? Snáď nie o nedostatku niečej snahy ?! Môžete mi vysvetliť, ako do toho zapadá Vami požadovaná vlastnosť volať rovnaké makro z rôznych buniek? A ako toto makro rieši Vami požadovaný viacnásobný cieľ, prípadne jeden cieľ ale menený viacerými bunkami, ktoré ste spomínal?
Keďže ste odpovedal tuším všeho-všudy na 1 či 2 moje upresňovacie otázky, tak Vašich smajlíkov fakt neberiem. Vnímam ich ako narážku (ak nie rovno urážku).
Pekný deň.
=IFERROR(CHOOSE(B1;"Ano";"Ne";"Nevím";"Asi ne";"Asi ano";"Vymýšlím hovadiny");"---")
=IFERROR(ZVOLIT(B1;"Ano";"Ne";"Nevím";"Asi ne";"Asi ano";"Vymýšlím hovadiny");"---")
alebo
=IFERROR(VLOOKUP(B1;Tabuľka hodnôt;2;FALSE);"---")
=IFERROR(SVYHLEDAT(B1;Tabuľka hodnôt;2;NEPRAVDA);"---")
Stalker napsal/a:
Opravdu nepotřebuješ x maker.
Sub Makro1()
Dim Cil As Range
Set Cil = List1.Range("Q14")
Select Case List1.Range("B1").Value
Case 1
Cil.Value = "Ano"
Case 2
Cil.Value = "Ne"
Case 3
Cil.Value = "Nevím"
Case 4
Cil.Value = "Asi ne"
Case 5
Cil.Value = "Asi ano"
Case Else
Cil.Value = "Vymýšlím hovadiny"
End Select
Set Cil = Nothing
End Sub
Pardon nenapsal jsem to podle vašeho jazyka ( myslím tím programátorský jazyk )
Trochu jsem si s tím pohrál a spojil jsem makra dohromady-
Priváte makro spouští makro které pak dále spouští ty další - je to jen jeden úkon navíc než jsem chtěl
Makro uvedené na začátku tématu mi v Worksheet nefungovalo a excel mi padal, ale v modulu pracuje správně.
Private makro ->
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
If IsNumeric(Target) And Target.Address = "$A$1" Then
Select Case Target.Value
Case 1 To 1: Makro1
End Select
End If
End Sub
Makra v modulu ->
Sub Makro1()
Set Target = Range("B1")
If Target.Value = "1" Then
Call Makro2
End If
If Target.Value = "2" Then
Call Makro3
End If
If Target.Value = "3" Then
Call Makro4
End If
If Target.Value = "4" Then
Call Makro5
End If
If Target.Value = "5" Then
Call Makro6
End If
End Sub
Sub Makro2()
Range("Q14").Select
ActiveCell.FormulaR1C1 = "Ano"
Range("Q15").Select
End Sub
Sub Makro3()
Range("Q14").Select
ActiveCell.FormulaR1C1 = "ne"
Range("Q15").Select
End Sub
Sub Makro4()
Range("Q14").Select
ActiveCell.FormulaR1C1 = "nevím"
Range("Q15").Select
End Sub
Sub Makro5()
Range("Q14").Select
ActiveCell.FormulaR1C1 = "asi ne"
Range("Q15").Select
End Sub
Sub Makro6()
Range("Q14").Select
ActiveCell.FormulaR1C1 = "asi ano"
Range("Q15").Select
End Sub
ty kody jsou univerzální jak jsem chtěl, ale asi moc složité, určitě se to dá napsat jednodušeji
jen pro představu, takto mohu mít 100x hodnota a k nim 100x makra
přílohu jsem upravil také do srozumitelnější podoby
elninoslov napsal/a:
Čo??? 100 makier??? Viď koniec môjho predošlého komentu - príloha aspoň s pár makrami. To máte fakt 100 diametrálne typovo odlišných makier, ktoré sa nedajú parametrizovať, aby ich nebolo toľko?
elninoslov napsal/a:
no ale ono mi to nejde, mám office 2021
nejde to makro, alebo nejde nahrať prílohu?
nahrál jsem jednoduchý sešit
ak je to súbor xlsm (s makrom), treba ho zabaliť do ZIP/RAR. Fórum xlsm nežerie :(
elninoslov napsal/a:
Veď som to urobil tak, aby ste si oblasť mohol zvoliť.
Toto:
Range("A1:A5")
nahraďte požadovanou oblasťou (inak v príklade máte 2x A2, to má byť asi A1,A2,A3):
Range("A1:A3,B1:B5,C1:C2")
alebo
Range("A1,A2,A3,B1,B2,B3,B4,B5,C1,C2")
A podľa mňa nie je jedno čo robia tie makrá. Teda nemusí to tak byť. Teraz keď zmením A2 na 2, vykoná sa Makro2 (nakopíruje nejaké data), C1 zmením na 2, a znova Makro2 vykoná to tisté (nakopíruje tie isté data). Nie je to divné ??? Preto hovorím o parametrizácii makra.
Kurňa chlapi, to je dnes dohadovanie v oboch témach o prílohu. Ach jaj...
néé 100 maker néé byl to jen příklad
no ale ono mi to nejde, mám office 2021
nahrál jsem jednoduchý sešit
jen pro příklad
v těch buňkách se budou objevovat hodnoty od 1 - 100
každé hodnota má své macro
takže máme 100 hodnot a k těch hodnotám máme 100 "maker"
To makro co jste napsal právě nemá tu definici těch určitých buněk pro spuštění určitých "maker"
a proto to asi možná nefunguje ( teda aspoň néé mě )
vysvětlím - ty přiřazená makra kopíruji z jiných listu vkládají a pak se vše přepočítá, ale myslím že je asi jedno co dělají, šlo mi o to, aby to private makro bylo univerzální -
vyberu buňku (buňky) v té se objeví určitá hodnota a na základě té hodnoty se spustí příslušné makro ( to je myslím to ( Case )
co přesně já potřebuji je nadefinovat určité buňky ( všechny nejsou jen ve sloupci A jsou "roztroušené" ( u mě konkrétně
A1, A2, A2, B1, B2, B3, B4, B5, C1, C2
A pokud se v těchto buňkách objeví hodnoty odpovídající přiřazeným makrum spustí se
Omlouvám se, ale nejsem v těchto věcech dobrý, pokusím se vysvětlit lépe
když hodnota buňka A1 = 1 spustí se makro1
když hodnota buňka A2 = 2 spustí se makro2 atd,
ale mělo by to fungovat také
když hodnota buňka A1 = 2 spustí se makro2 atd.
když hodnota buňka A2 = 1 spustí se makro1 atd.
vlastně když hodnoty v buňkách se změní, tak by se měli spustit makra přiřazené "makra" k hodnotám v buňkách
vlastně jen nadefinuji buňky ( třeba ve sloupci A ) a podle hodnoty se spustí přiřazená makra které něco vykonají
Ano máte pravdu, jsou to makra které jsem našel na netu a pokusil se je upravit, ale bez úspěšně.
Jediné co mi fungovalo bylo druhé makro v dotazu tohoto tématu, ale po úpravě na více buněk už néé
Dobrý den,
nefunguje mi makro, může někdo poradit ?
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "1" Then
Call Makro1
End If
If target.Value = "2" Then
Call Makro2
End If
End Sub
Při spuštění makra mi excel spadne
Zkoušel jsem ještě
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
If IsNumeric(Target) And Target.Address = "$A$1" Then
Select Case Target.Value
Case 1 To 1: Macro1
End Select
End If
End Sub
Toto makro mi funguje, ale když přidám výběr na základě hodnoty buňky více maker tak sice chybu nehlásí, ale nic se neděje, potřeboval bych toto
když buňka (nebo jiná buňka, dle výběru ) obsahuje "1" spustí se makro1, když "2" spustí makro2 atd.
Toto makro také nefunguje
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
If IsNumeric(Target) And Target.Address = "$A$1" Then
If IsNumeric(Target) And Target.Address = "$A$2" Then
If IsNumeric(Target) And Target.Address = "$A$3" Then
If IsNumeric(Target) And Target.Address = "$A$4" Then
If IsNumeric(Target) And Target.Address = "$A$5" Then
Select Case Target.Value
Case 1: Makro1
Case 2: Makro2
Case 4: Makro4
Case 5: Makro5
End Select
End If
End Sub
Aha , když je to nutný tak používám v makrech "Application.ScreenUpdating = False" eliminuje to přeskakování mezi listy a jinými cykly v makru, vypíná úplně všechen ten "balast" jak jste psal :)
jj koukal jsem, že je tam toho méně
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.