Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  176 177 178 179 180 181 182 183 184   další » ... 289

Range má režim R1C1, alebo namiesto neho použite Cells(riadok,stlpec), k tomu napr. .Offset() alebo .Resize(). Skúste sa na to mrknúť vlastnými silami, no ak to nedáte, tak niekto pomôže. Keď nebudem na mobile... Jáj a ešte, ktorý riadok sa dá spoĺahlivo použiť na určenie posledného stĺpca ? Riadok 8 ?

Tak ako to popisujete, tak to funguje, bez poškodenia nezobrazených riadkov. Rovnako ako aj napísanie jednej hodnoty a ťahanie za roh.

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.

Určite ? Mne to fachá na všetky súbory, či už XLS, XLSX, XLSM, otvárané priamo, otvárané z archívu. Nič nepadá, robí to to čo má, kopíruje ten dátum.
-určite máte v XLSB aj tú triedu definovanú v ThisWorkbook ?
-v samotnej triede cExcelEvents si už iba zamente ten msgbox Hello za Váš kód. Ja som to urobil za Vás tu to máte.
-Uložil ste ten XLSB po úprave?

-pozatvárajte Excel
-zálohujte si Váš XLSB súbor bokom. Nahraďte ho týmto v adresári
c:\Users\Vaše_meno\AppData\Roaming\Microsoft\Excel\XLSTART\

Kto nechce sťahovať tak:
V XLSB - ThisWorkbook
Option Explicit

Private XLApp As cExcelEvents
Private Sub Workbook_Open()
Set XLApp = New cExcelEvents
End Sub

V XLSB - cExcelEvents
Option Explicit

Private WithEvents App As Application
Private Sub Class_Initialize()
Set App = Application
End Sub
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

'// Prevent message when this workbook is opened
If Wb.Name <> ThisWorkbook.Name Then
'MsgBox ("Hello")
Range("C2").Select
ActiveCell.FormulaR1C1 = "7/25/2017"
Range("C2").Select
Selection.NumberFormat = "yyyy/mm/dd"
Range("C2").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
End If

End Sub

Malo by to ísť cez triedu:

EDIT: Ale s vykonaním zmiem pri otvorení "každého zošitu" by som bol veľmi opatrný, a poriadne ošetril ako má makro zistiť, či sa jedná o vhodný zošit. Vaše makro na vkladanie dátumov nenávratne zničí celé stĺpce C v akomkoľvek zošite. Uvedomujete si to dúfam.

Ak je príloha xlsm, musíte ju zabaliť do ZIP/RAR, a nesmie byť väčšia ako 256KB. Ak sa nezmestí, uploadnite ju niekde na Free úložisko a dajte odkaz.

Tak potom aj takto sa dá, a definovaným názvom ľahko nahradíte A1:A5 dynamickou oblasťou.
=(MAX(A1:A5)-MIN(A1:A5))/(COUNTA(A1:A5)-1)
=(MAX(A1:A5)-MIN(A1:A5))/(POČET(A1:A5)-1)

Pre podstatné zjednodušenie (netreba dopĺňať vzorec s podmienkou) je to ako Tabuľka, nie tabuľka. Na toto makro nepotrebujete. Ten klik na filter v hlavičke Tabuľky v stĺpci s podmienkou zvládnete aj bez makra. Podmienka je v skrytom stĺpci AK, to si kľudne odkryte. Filtrovaná hodnota sa berie z bunky AN1, ak tam nič nieje filtrujú sa len prázdne riadky (prázdnym riadkom sa rozumie taký v ktorom sa v uvedených stĺpcoch nič nenachádza). Oblasť tlače je nastavená na A:AJ. Tie 3 riadky kódu som Vám tam napísal, ale nepotrebujete ich.

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.

Príklad:
Sub NastavHlavisku()
Dim S As String, Vyska As Single
S = InputBox("Zadej výšku řádku v rozmezí 12-40", "Výška písma", 12)
If Not IsNumeric(S) Then MsgBox ("Chyba !"): Exit Sub
Vyska = Val(S)
If Vyska < 12 Or Vyska > 40 Then MsgBox ("Nesprávna veľkosť"): Exit Sub
ActiveSheet.PageSetup.LeftHeader = "&" & Vyska & Sheets("tiskZmenyZahlavi").Range("B3")
End Sub

Za ActiveSheet bude ten list na ktorý sa odkazujete cez With, a ten "tiskZmenyZahlavi" je asi iba zdroj textu...

Ale to som Vám tuším vravel už minule (či to ste nebol Vy ???) - netestovať farbu spôsobenú PF, ale rovnakú podmienku akú má PF. Aj som Vám to chcel teraz napísať, ale keďže som nenašiel pre M žiadne PF, a chcel ste kontrolovať farbu, tak jediné, čo ma napadlo, že to farbíte ručne, a to by inak ako týmto makrom nešlo. Takže "M" nieje treba testovať na farbu.
O stĺpci "O" ste nič nevravel. Takže ako teda ?
Chcete do "X" napísať "Vychystáno" v týchto 3 prípadoch :
- v stĺpcoch N a M je rovnaká hodnota
- v stĺpcoch O a M je rovnaká hodnota
- v stĺpcoch N aj O aj M je rovnaká hodnota

Ak tam v "X" môžete mať vzorec, tak na to nepotrebujete ani makro, ak nie tak:
Sub Vychystano()
Dim R As Long, RNG As Range, i As Long, H()
With Worksheets("Dluhy")
R = .Cells(Rows.Count, 1).End(xlUp).Row - 2
If R = 0 Then Exit Sub
With .Cells(3, 24).Resize(R)
H = .Offset(0, -11).Resize(, 3).Value2
For i = 1 To R
If H(i, 1) = H(i, 2) Or H(i, 1) = H(i, 3) Then
If RNG Is Nothing Then Set RNG = .Cells(i) Else Set RNG = Union(RNG, .Cells(i))
End If
Next i
End With
End With
If Not RNG Is Nothing Then RNG.Value = "Vychystáno"
Set RNG = Nothing: Erase H
End Sub

Vzorce vrátia rozdielne hodnoty podľa premiešania dát. A údaje evidentne niesú zoradené. Podarilo sa mi napr na oboch vzorcoch navodiť rovnaké číslo ale iné znamienko, alebo úplne iné číslo. Takže bude presne záležať na tom ako budú vyzerať dáta (alebo čo presne znamenajú), a čo chce excelama dosiahnuť.

RNG je oblasť do ktorej sa bude hromadne vpisovať. Túto oblasť postupne rozširujeme, ale na začiatku nemôžeme zlúčiť cez UNION nič+niečo, ale musíme nastaviť najskôr prvú bunku iba cez SET. Až následné bunky pridáme k RNG cez UNION, pretože už RNG nieje "nič" (Nothing). Nuž ako Vám to inak vysvetlím...

To s tým E2007 neviem posúdiť, mám 2016.

Máte tam With, ale nemáte už bodku pred .Offset ani .Cells (navyše v .Cells chýba to "s" na konci"), netestujete celú oblasť, M nemá žiadny PF teda nemôžete checkovať žiadny FormatConditions, a navyše cez FormatConditions zistíte iba farbu, aká je nastavená v PF, nie či je zobrazená, ... atď.
Teda napr.:
Sub Vychystano()
Dim rdLast As Long, RNG As Range, Bunka As Range
With Worksheets("Dluhy")
rdLast = .Cells(Rows.Count, 1).End(xlUp).Row
For Each Bunka In .Range(.Cells(3, 24), .Cells(rdLast, 24)).Cells
      With Bunka
If .Offset(0, -11).DisplayFormat.Interior.Color = 5296274 Or .Offset(, -10).DisplayFormat.Interior.Color = 5296274 Then
If RNG Is Nothing Then Set RNG = Bunka Else Set RNG = Union(RNG, Bunka)
End If
End With
Next Bunka
End With
If Not RNG Is Nothing Then RNG.Value = "Vychystáno"
Set Bunka = Nothing: Set RNG = Nothing
End Sub

Napr. takto.


Strana:  1 ... « předchozí  176 177 178 179 180 181 182 183 184   další » ... 289

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

vyhledání obsahu buňky

vfort • 18.7. 11:22

Názvy z řádků do sloupců Power Query

Alfan • 18.7. 10:01

Tlac 2 roznych tabuliek

loksik.lubos • 17.7. 20:43

Týden v roce

Petr92 • 16.7. 15:34

Řazení podle času v kategoriích

veny • 16.7. 11:34

špatný výpočet ze zisku - příčina?

Anonym • 12.7. 22:56

špatný výpočet ze zisku - příčina?

Jakoby • 12.7. 12:35