< návrat zpět

MS Excel


Téma: Změna buňky na 0 a vyvolání makra rss

Zaslal/a 17.8.2017 10:35

Ahoj
Pomůže mi někdo please, mám seznam dílů které se řadí podle určitého počtu,od nejmenšího po největší který měním ve sloupci A. Chci když zadám že mám 0 položek toho typu aby se spustilo makro na označení oblasti a odeslání na mail. Tlačítkem button mi to jde ale automaticky při změně hodnoty na 0 v buňce A2 to nejde. DĚKUJI ZA KAŽDOU RADU

Příloha: zip37285_final-macro.zip (78kB, staženo 31x)
Zaslat odpověď >

#037286
avatar
Ahoj, snad by to šlo takto:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
m = Target
If Target = 0 Then Send_Range
[A2:D2000].Sort Key1:=[A2]
[A:A].Find(What:=m, LookIn:=xlValues).Select
End If
End Sub
citovat
#037288
avatar
Super Funguje. Děkuji moc 1citovat
#037296
elninoslov
No mne to skôr pripadne takto:
-je jedno v akom riadku stĺpca A (doteraz ukazovalo iba 5 riadkov)
-môže byť vyššia súvislá oblasť (doteraz iba 1 bunka)
-najskôr sa zistí, či v zmenenej oblasti sú 0
-zistí sa pozícia prvej 0 v zmenenej oblasti, a uloží sa artikel (pre neskoršie označenie)
-zoradí sa (aby 0 boli za sebou)
-označia sa a odošlú
-označí sa prvá z 0, ktoré boli naposledy pridané, pozícia v zoradených sa zistí podľa čísla artiklu

Ak som vedľa tak nič...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Art As String, R As Long
  If Target.Column = 1 Then
    On Error Resume Next
    R = WorksheetFunction.Match(0, Target, 0)
    On Error GoTo 0
    If R > 0 Then
      Art = Target.Cells(R).Offset(, 2).Value2
      With Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 4)
        .Sort Key1:=Cells(2, 1)
        Cells(1, 1).Resize(WorksheetFunction.CountIf(.Columns(1), 0) + 1, 4).Select
        Call Send_Range
        .Columns(3).Find(What:=Art, LookIn:=xlValues).Offset(, -2).Select
      End With
    End If
  End If
End Sub

Sub Send_Range()
  ActiveWorkbook.EnvelopeVisible = True
  With ActiveSheet.MailEnvelope
    .Introduction = "This is a sample worksheet."
    .Item.To = "elninoslov@gmail.com"
    .Item.Subject = "My subject"
    .Item.Send
  End With
End Sub
citovat
#037303
avatar
Děkuji to mi úplně stačí 1citovat
#037332
avatar
Ahoj. Nešlo by prosím ještě aktivovat nulu výpočtem buněk =J-K? aktivuje se jen při přepsáni ve sloupci A. viz soubor. Děkuji
Příloha: zip37332_final-macro.zip (93kB, staženo 26x)
citovat
#037333
elninoslov
Flintu do žita len tak nehádžem, ale pri Vás ju tuším aj zakopem :)
Tak ešte raz, dokola, čo so Vám písal minule, aj predminule s kontrolou 0 a 1 ...

Makro nedostane žiadnu indíciu o tom, že sa zmenila nejaká bunka vzorcom. Makro dostane iba informáciu, že sa prepočítava celý list - procedúra Calculate. Makro netuší nič o Vašej požadovanej informácii, či sa zmenila niektorá bunka v A na 0.

Preto som sa Vás minule pýtal, čo spôsobuje zmenu. Nepozerajme sa teraz vôbec na stĺpec A. Kašle naň pes. Je to výsledok podľa buniek J a K. Teda otázka znie :
Čo spôsobuje zmenu v J a K ? Je tam vzorec, alebo tam vpisuje hodnoty makro či Vy ručne ?

Ak je tam vzorec, tak aký ? Pozrime sa na bunky v tom vzorci, a nájdime takú ktorú mení makro alebo Vy. Prečo ? Lebo ak je zmenená nejaká hodnota makrom alebo Vami, tak VBA dostane indíciu, ktorá presne bunka bola zmenená. A keď budeme vedieť, ktorá bola zmenená, začneme podľa vzorcov v J a K (alebo v iných stĺpcoch, neviem kam až sa dostaneme po manuálne zapisovanú hodnotu), podľa náväznosti vypočítavať, čo je v A.

A sme doma, lebo zistíme, že bola vlastne v konečnom dôsledku zmenená 0 v A.

Chápete?

Ak totiž nikde nebudete vkladať ručne hodnotu, ale všetko čo je naviazané na A bude iba vzorcami, napadá ma okrem toho čo som Vám písal minule (nechať niekde v liste kópiu starých dát a pri každej Calculate ju kontrolovať - pomalé), ešte možnosť pri otvorení súboru načítať do Poľa tabuľku z listu, a pri každom Calculate kontrolovať - tiež pomalé, ale rýchlejšie ako kontrolovať všetky bunky v liste.

Ak to nezistíte, ktorá bunka bola zmenená, tak Vám bude makro v Calculate odosielať mail neustále, aj pri zmene bunky v B alebo C, proste ktorejkoľvek, nie iba v A, ako potrebujete!

Chápeme sa, ale bo zase nič ?

Teda teraz napíšte, čo je v J a v K, ak je tam niekde vzorec, napíšte čo je v bunkách použitých vo vzorci, ... opakujte až kým neprídete po nejakú bunku menenú bez vzorca.citovat
#037345
avatar
Ano bude se hodnota vkládat ručně, po odběru dílu.
J=na skladě. K=odběr.citovat
#037431
elninoslov
Tak skúste toto, je to na zmenu v stĺpci K. Vidím, že asi budete chcieť po odoslaní preniesť 0 riadky do druhého listu, to už zvládnete.
Příloha: zip37431_final-macro.zip (101kB, staženo 26x)
citovat
#037432
avatar
Ahoj

Trošku jsem to pozměnil. V listu "výsledek" do žlutého pole zadám čtečkou kod, vyhledá mi to v listu "data" zobrazí a odešle na e-mail.
Potřebuji PRVNÍ odpis dílu (-1) z aktuálního stavu 8. SPOO13-FSM-KOVOVY FILTR-MECH-8.a poté zobrazení a odeslání.Jinač každá odebraná položka bude odepsána a odeslána. Jde to udělat přes makro nebo vzorcem?
Příloha: zip37432_kopie-hledat-vse.zip (97kB, staženo 25x)
citovat

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