< návrat zpět

MS Excel


Téma: Spustit určité makra změnou hodnoty v buňce rss

Zaslal/a 10.11.2022 22:57

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 7

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

Příloha: zip53801_sesit1.zip (12kB, staženo 4x)
Zaslat odpověď >

Strana:  1 2 3   další »
#053804
elninoslov
Tie kódy mi prídu ako nezmysel. Najmä posledný. Veď tam testujete či sa Target.Address="$A$1" a následne ak áno, tak či sa rovná "$A$2". Ako sa môže rovnať obom hodnotám??? Ďalej to vyzerá ako výsek z nejakého iného makra, keďže tam chýbajú ukončenia If - teda End If.

To Makro1, Makro2 vyzerá ako? Čo majú robiť? To isté, len s nejakým iným parametrom? Treba jedno parametrizované makro.

Či sa zmení hodnota na 1,2,3,4,5 sa má kontrolovať v jednej bunke? Vo viacerých? V ktorých A1:A5? Zmena v nich môže nastať naraz? Vykonať všetky makrá podľa všetkých zmien vo všetkých bunkách?

Čo myslíte tým (v 2. makre), že keď pridáte ďalšiu hodnotu nič sa nestane???
Case 1: Macro1
Case 2: Macro2
Toto nič nevykoná???

V 1. makre meníte Target - práve zmenenú bunku, ktorej spracovanie ešte neskončilo. Možno preto padá Excel. To nerobte.

Popíšte to podstatne lepšie.citovat
#053808
avatar
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éécitovat
#053812
elninoslov
To nebude žiadny problém pre viac sledovaných buniek. Len mi prezraďte čo tie makrá robia. Ak robia podobnú vec, tak stačí jedno, ale posielať sa bude do neho parameter. Myslím to takto nejako:
Makro1 má skryť stĺpce A:C, ostatné odokryť
Makro2 má skryť stĺpce D:F, ostatné odokryť
Makro3 má skryť stĺpce G:I, ostatné odokryť
nebudem robiť 3 rovnaké makrá, ale iba jedno, ktoré bude mať vstupný parameter (názvy stĺpcov), teda ho zavolám napr.
Moje_parametrizovane_makro 2
a v makre bude nadefinované, že typ 2 znamená "D:F" napr. cez pole Array().
Alebo ho zavolám
Moje_parametrizovane_makro "D:F"
a obdobne.
Proste by bolo dobré uviesť, čo presne tie makrá robia, ak sú obdobné. Ak sú typovo diametrálne odlišné, tak nič, a urobím to klasicky.

EDIT: Tak všeobecne, napr. takto:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zmena As Range, Are As Range, Bunka As Range

Set Zmena = Intersect(Target, Range("A1:A5"))
If Not Zmena Is Nothing Then
For Each Are In Zmena.Areas
For Each Bunka In Are.Cells
Select Case Bunka.Value
Case 1: Makro1
Case 2: Makro2
Case 3: Makro3
Case 4: Makro4
Case 5: Makro5
End Select
Next Bunka
Next Are
End If
End Sub
citovat
#053813
avatar
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í secitovat
#053814
avatar
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ě )citovat
#053815
elninoslov
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...citovat
#053816
avatar
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"citovat
#053817
elninoslov
Č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?citovat
#053818
avatar
no ale 7 ono mi to nejde, mám office 2021
nahrál jsem jednoduchý sešitcitovat
#053819
avatar
néé 100 maker néé byl to jen příkladcitovat

Strana:  1 2 3   další »

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

odpocet a storno tl.

PavDD • 28.3. 8:53

odpocet a storno tl.

Začátečník • 26.3. 14:39

odpocet a storno tl.

PavDD • 26.3. 10:22

odpocet a storno tl.

elninoslov • 26.3. 7:50

odpocet a storno tl.

PavDD • 26.3. 7:26

odpocet a storno tl.

elninoslov • 25.3. 22:34

odpocet a storno tl.

Začátečník • 25.3. 15:09