tuto proceduru vlozte do modulu ThisWorkbookPrivate Sub Workbook_BeforeClose(Cancel As Boolean)
If IsEmpty(List1.Range("B3")) Then
MsgBox "Vyplňte buňku B3, protože jináč to nezavřete :-)", vbCritical
List1.Range("b3").Select
Cancel = True
End If
End Sub
=SUMA(LARGE(oblast10;1);LARGE(oblast10;2);LARGE(oblast10;3))
No tak logiku spousteni procedur si musite ujasnit sam, to za vas bez znalosti komplexni problematiky udelat nemuzu - museli bychom prodiskutovat cely sesit a hlavne jeho ucel a potreby.
& vbcrlf & vbcrlf (tyto specialni prikazy znamenaji pouze 'ENTER' - tedy odradkovani textu - zadna velka veda
Je pravda, ze obarveni bunky pro jeji zvyrazneni uplne idealni, protoze je potreba ji po odstraneni nedostatku take odstranit (radeji bych doporucil podminene formatovani bunek).
Ale stale si myslim, ze pokud vite, kde ma uzivatel neco vyplnit, tak je dobre mu nabidnout InputBox (ten zamezi uzivateli, aby vyplnil napr. text misto cisla nebo treba vyplneni spatne bunky).
Co vam neni jasne na te sprave v MsgBox? Klidne vysvetlim...
No nevim, pokud se pri nejake procedure zjisti, ze je nekde chyba, mohla by ta procedura rovnou zajistit to, aby uzivatel chybu opravil.
Ale chapu, ze nerozumim, k cemu cely sesit slouzi a kde jsou jeho uskali - dost tezko se to takhle 'nasucho' odhaduje...
vypada to tak, ze Excelu vadi ty prazdne bunky, po odstraneni prazdnych bunek ve sloupci bude filtr fungovat spravne...
A nebylo by lepsi misto MsgBox uukazat InputBox, do ktereho by uzivatel rovnou zapsal spravnou hodnotu, ktera by se ulozila do potrebne bunky?
Ja teda nevim, ale pri skryvani 50 radku to urcite musi byt hned hotove (Zacatecnik vychazel ze zadani a napsal to tak jednoduse a dobre, jak jen to jde), zruseni updatovani obrazovky to trosku zrychli a odstrani problikavani...
Sub neco()
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 50 ' pro 50 řádků od 1
If Cells(i, 1) = Empty Then ' buňka ve sloupci A je prázdná?
Rows(i).Hidden = True ' ano, skryj řádek
End If
Next i
Application.ScreenUpdating = True
End Sub
aha - pak staci tu samou proceduru vlozit i do modulu Listu1 (jen pozor, ze to bude zcela nova procedura, ktera spusti pri kazde aktivaci Listu1 - je dobre si rozmyslet, co ma vlasnte delat a kdy...)
s timto jsem se nesetkal, excel tohle myslim umi bezne, muzete pripojit dotycny sesit?
Na Listu0 do bunky C2 vlozte tento vzorec: =INDEX(List1!C:D;POZVYHLEDAT(List0!A2;List1!D:D;0);1) a protahnete ho dolu.
Jen POZOR, vsiml jsem si, ze nektere kody za sebou maji nejake mezery, pokud nebudou stejne napsane na Listu0 i Listu1, jinak to nebude fungovat!
1 )Response = MsgBox("Chyba na Liste1" & vbcrlf & vbcrlf & "Chyba je v bunce: C" & worksheets("List1").range("b26") , vbExclamation)
2) tuhle cast jsem moc nepochopil - tato procedura je svazana s listem a zobrazi se tedy presne tehdy, kdy ma (pri aktivaci listu - u vas asi List2) - nicmene neni problem zmenit aktivni list na List1 (asi by to vazne chtelo vzorek, abych to pochopil :-))
snad jsem to spravne pochopil:Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D3:D24,H3:H24")) Is Nothing And IsEmpty(Cells(Target.Row, 2)) = False Then
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("D3:D24,H3:H24")) Is Nothing And IsEmpty(Cells(Target.Row, 2)) = True Then
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Podivejte se na funkci SUMIF...
neco jako tohle: =SUMIF($E$4:$E$7;"="&B10;$D$4:$D$7)
jsou to maticove vzorce, jejich editace musi byt ukoncena pomoci klaves ENTER+SHIFT+CTRL
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.