čo ak by v priebehu makra nastala chyba?
Musíš v kódu ošetřit chybový stav "On Error Goto XXX" a sešit zamknout.
je to dostatočné zabezpečenie?
Pro opravdové mistry není heslo překážka, ale proti běžnému uživateli to stačí.
nemôže sa k veryhiden sheets dostat uzivatel bez hesla VBA projektu ?
Pokud je sešit zamknutý pod heslem tak ho nezobrazí,
ale pokud ovládá VBA tak ho samozřejmě může zkopírovat.
Doplním:
proti tomu aby mohli vidiet a upravovat makro
Google - zamknuti vba projektu
@ AL
sa Ti divím, že sa namáhaš
Jiří, možná že mi něco uniká. Ale vysvětli mi, kde asi bude v oblasti "$E$2:$F$1000" nalezena shoda s buňkou "E2"?
Ahoj Jirka78. Jaký význam má "SVYHLEDAT(E2;$E$2:$F$1000;2;NEPRAVDA)"?
Nestačí místo toho přímo "F2"?
eLCHa tak ten "SetTimer" je jen obdoba "OnTime", prostě časovač. Něco jsem si o tom přečetl a raději ne. Já měl na mysli spíš sledování událostí na úrovni OS, něco jako Wb/Wn_Activate. Ale nevadí, i to moje řešení je celkem v poho. Ještě jednou díky.
To ses mohl zeptat v tom předešlém tématu.Dim iRow As Long, xRadku As Byte
'zjisti cislo posledniho radku
iRow = Range("I65000").End(xlUp).Row
'pocet kopirovanych radku
On Error Resume Next
xRadku = InputBox("prompt", "title", 1)
On Error GoTo 0
If xRadku > 0 Then
'kopiruj xRadky vzorec
Range("I" & iRow).Copy Range("I" & iRow + 1 & ":I" & iRow + xRadku)
'kopiruj xRadky format
Range("A" & iRow & ":I" & iRow).Copy
Range("A" & iRow + 1 & ":I" & iRow + xRadku).PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
Range("I" & iRow + 1).Select
End If
Už jsem tento názor zaregistroval vícekrát. Zřejmě pravda.
třebaDim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "xxx@xxx.com"
.cc = ""
.BCC = ""
.Subject = "chyba!"
.Body = "chyba+nazov celeho zosita (nazov zosita je mail)"
.send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
eLCHa díky za Funkce! Podívám se co umí. Dělám jenom pro svoje děcka takové domácí účetnictví, nic světoborného. Tak že se kvůli tomu nebudu pouštět do pro mě neznámého jazyka (při mém věku). Vypnutí je přece v "Wb_Activate".
Ahoj lidi!
Špekuluju jak vyřešit tuto situaci. Chci zajistit, aby v daném sešitě, pokud je tento Aktivní bylo EnableEvents vždy True.
Jedná se mi o situaci, kdy uživatel přepne do jiného sešitu, tam třeba nevědomky vypne Sledování Událostí a následně přepne zpátky do onoho sešitu.
Zatím jsem to vyřešil takto:Dim eeStart As Date
Private Sub Workbook_Activate()
If eeStart > 0 Then Application.OnTime eeStart, "ThisWorkbook.Zapni_Udalosti", , False
'další kód
End Sub
Private Sub Workbook_Deactivate()
eeStart = Now + TimeValue("00:00:02")
Application.OnTime eeStart, "ThisWorkbook.Zapni_Udalosti"
End Sub
Private Sub Zapni_Udalosti()
If ActiveWindow.Parent.Name = ThisWorkbook.Name Then
If Not Application.EnableEvents Then
Application.EnableEvents = True
eeStart = 0
Call Workbook_Activate
End If
Else
eeStart = Now + TimeValue("00:00:02")
Application.OnTime eeStart, "ThisWorkbook.Zapni_Udalosti"
End If
End Sub
Ale nebylo by nějaké API, nebo něco?
Jojo, člověk se musí pořád učit.
To jsem netušil, že v Podmíněném Formátu libovolné číslo různé od nuly vrátí PRAVDA.
Měl jsem vždy za to, že vztah "PRAVDA=1" platí explicitně a oboustranně. Díky AL.
Možná na větším monitoru.
Na malém buď=COUNTIF(B1:B10;1)>0nebo=SUMA((B1:B10=1)/1)>0
např:Sub VW()
Dim ws As Worksheet, wsD As Worksheet 'zkratky pro jednotlive listy
Dim iRow1 As Long, xRadku As Byte
Dim dtDatum As Date
Set ws = Worksheets("vw")
Set wsD = Worksheets("-D")
dtDatum = Date
'posledni moznost si to rozmyslet
If vbNo = MsgBox("Chystáš se pøidat položky do databáze projektu " & vbCrLf _
& "Opravdu to chceš udìlat?", vbYesNo) Then Exit Sub
'jestli je na databazi nasazen filtr, tak ho oddelej
If wsD.FilterMode Then wsD.ShowAllData
'zjisti cislo posledniho radku v databazi + 1
iRow1 = wsD.Range("A65000").End(xlUp).Row + 1
'pocet kopirovanych radku
xRadku = 20
'kopiruj xRadky do databaze
ws.Range("A2:C" & xRadku + 1).Copy wsD.Range("A" & iRow1)
'kopiruj format
wsD.Range("A" & iRow1 - 1 & ":C" & iRow1 - 1).Copy
wsD.Range("A" & iRow1 & ":C" & iRow1 + xRadku - 1).PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
wsD.Activate
wsD.Range("A" & iRow1).Select
Set wsD = Nothing
Set ws = Nothing
End Sub
např: COUNTIF()
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.