K tomu ale musíš použít kód ze Vzor_2.
Je tam Sheets("Index"), což je(byl) názen prvního listu. Pokud jsi ho změnil na "seznam zaměstnanců", musíš upravit v kódu na Sheets("seznam zaměstnanců").
OK?
Máš tam dvě možnosti. Snad se tím prokoušeš.
Když tak piš.
H3,I3 není problém. B7:B25 je oblast s názvy listů. Otázka je, jak jsou ty listy pojmenované v různých sešitech. Mají stejný tvar a mění se index (List1, List2, atd), nebo mají různý tvar (Karel, Richard, atd)? Bylo by asi výhodnější, aby po zadání názvu sešitu se ty názvy listů vypsaly do (i, 2) samy. Ne?
Nebo jak tuto oblast B7:B25 vyplňuješ?
Jinak, žádné vzorce se nevkládají. Pouze hodnoty.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim globalni_promenna As String, i As Byte, WbSh As String
If Range("h3") <> globalni_promenna Then
Application.EnableEvents = False
globalni_promenna = Range("h3").Value
For i = 7 To 25
If Cells(i, 2) > 0 Then
WbSh = "'\\hepek01\Users\expedice\Dochazka\" & Range("i3") & "\[Docházka expedice " & Range("h3") & " " & Range("i3") & ".xls]" & Cells(i, 2) & "'!"
If Not IsError(ExecuteExcel4Macro(WbSh & "R1C1")) Then
Cells(i, 1) = ExecuteExcel4Macro(WbSh & "R7C7")
Cells(i, 5) = ExecuteExcel4Macro(WbSh & "R42C7")
Else
Cells(i, 1) = "x"
Cells(i, 5) = "x"
End If
Else
Cells(i, 1) = ""
Cells(i, 5) = ""
End If
Next i
Application.EnableEvents = True
End If
End Sub
A co bez vzorce?
Sub ListExist()
'Range musí být R1C1
If IsError(ExecuteExcel4Macro("'\\hepek01\Users\expedice\Dochazka\" & Range("i3") & "\[Docházka expedice " & Range("h3") & " " & Range("i3") & ".xls]" & Cells(i, 2) & "'!R1C1")) Then
Cells(i, 5) = ExecuteExcel4Macro("'\\hepek01\Users\expedice\Dochazka\" & Range("i3") & "\[Docházka expedice " & Range("h3") & " " & Range("i3") & ".xls]" & Cells(i, 2) & "'!R42C7")
Else
Cells(i, 5) = 0
End If
End Sub
Fachčí ti to aspoň po Inicializaci ?
Mi to fachčí normal, pokud TB1 je datum.
Zkus:
Private Sub TextBox1_Change()
If IsDate(TextBox1) Then
TextBox2.Value = Format(TextBox1.Value, "ww - yyyy")
Else
TextBox2.Value = "CHYBA DATUM !!!"
End If
End Sub
Private Sub TextBox1_Change()
TextBox2.Value = Format(TextBox1.Value, "ww - yyyy")
End Sub
Private Sub UserForm_Initialize()
TextBox1.Value = Format(Now, "dd.mm.yyyy")
End Sub
"=SUMPRODUCT(array1, [array2], [array3], ...)"
Pokud mají být vynechány i svátky, je třeba je někam vypsat a pak se na ně v té Fci odkázat.
If IsError(Cells(x, 1)) Then Rows(x).Delete
Toto chování fce DoEvents jsem nedávno objevil taky.
Citace z helpu:
"Funkce DoEvents předá řízení operačnímu systému.
Řízení je předáno zpět, jakmile operační systém dokončí zpracování událostí ve frontě
a všechny úhozy ve frontě PředatKlávesovéÚhozy jsou odeslány."
Opravdu to takto fachčí.
Pokud ovšem je vyvolán mód editace, běh makra je v místě "DoEvents" ukončen.
Nevím proč, ale je to tak.
Kontrola jasná.
Čemu vadí vzorce, které při tisku nejsou vidět?
Nebo se to ještě někam posílá mailem?
No však se nakonec domluvíme. V té přípravě pro tisk je nutné mít obě tabulky na jednom listě, nebo mohou být každá zvlášť, když se pak stejně tisknou každá zvlášť?
Měl by být ten list(listy) pro přípravu tisku ve zvlášt sešitu, nebo jako součást toho sešitu E-spravce.
No a co se týká těch oprav. Nevím co se tam bude případně opravovat, ale neměl by tam teda zůstat aspoň vzorec pro minuty? Nebo snad i objekty komentářů pro kontrolu již vypsaných? Ty by se smázly až před tiskem.
V tom máš pravdu. Ale asi všichni známe situace, kdy po úpravách v listu odmažeme vatu a CTRL+END stejně odletí do tramtárie. Pokud v makrech nechceme kopírovat tuto vatu je asi třeba si tu oblast osahat. Pokud je list bez této zaseknuté vaty a chová se jak očekáváme, pak opravdu stačí UsedRange.
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.