Mi to funguje naprosto normálně. Mužu poprosit jak jsi tam dostal tu tabulku, ať to nemusím zbytečně studovat, i když prozatím nevím využítí ale je to velmi zajímavé a čaem se určitě něco najde. Díky
Jo mám Excel 2002 SP3
Toto stačí
Pardon, zapomněl jsem přílohu
Co tohle
Snad to je to co potřebuješ. Mělo by to hodit i v 2007 na jeho počet řádků a sloupců.
Funkce SUMIF skutečně nefunguje přes více než jeden list (narozdíl od funkce SUMA). Pokud skutečně potřebuješ SUMIF přes více listů pak je postup následující, pokud ti stačí SUMA přečti jen konec.
1. uděláš si na všech listech ve volné oblasti pomocnou tabulku tak, že stiskneš list "první" držíš shift a stlačíš list "poslední"
2.do sloupce volného např. A zadáš kriteria, která chceš sčítat a do sloupce např. B vzorce pro sumaci
3. stiskneš list výsledek a do sloupce např. A zadáš kriteria a do sloupce např. B vzorec pro sumu a jdeš na list první a se SHIFT na poslední a označíš buňku pro součet.
Zjednodudšená verze je v příloze
Zkus toto, doplň tabulku indexů!!
A co tohle.
Možná pomůže:
Dim cpop, cbyt, crok, cpor, vysledek As String
cpop = Cispop
cbyt = Cbytu
crok = Year(Now())
cpor = CISCE
vysledek = cpop & "/" & cbyt & "/" & crok & "-" & format(cpor,"00000")
' doplnění hodnot do tabulky
pocet.Offset(0, 0).Value = CISCE.Value
pocet.Offset(0, 2).Value = ComboBox1.Value
pocet.Offset(0, 3).Value = Cispop.Value
pocet.Offset(0, 4).Value = Cbytu.Value
pocet.Offset(0, 5).Value = Najemce.Value
pocet.Offset(0, 6).Value = Strd.Value
pocet.Offset(0, 7).Value = DTPicker1.Value
pocet.Offset(0, 1).Value = vysledek
Snad tohleto by mohla být cesta, ale je nutno dopracovat začátky a konce, popř jak jinak specifikovat pohyb, když je buňka zamčená
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Locked Then
Select Case Application.MoveAfterReturnDirection
Case xlToLeft
Target.Offset(0, -1).Select
Case xlDown
Target.Offset(1, 0).Select
Case xlUp
Target.Offset(-1, 0).Select
Case xlToRight
Target.Offset(0, 1).Select
Case Else
End Select
End If
Například funkce, kde vkládám oblast, kterou chci sečíst
Public Function Součet(Oblast As Range)
Application.Volatile
Součet = 0
For Each bunka In Oblast
Součet = Součet + Application.WorksheetFunction.Substitute(bunka, " ", "")
Next bunka
End Function
Pak to lze např takto:
ČísloBezMezer = Application.WorksheetFunction.Substitute(ČísloSMezerami, " ", "")
Samozřejmě user form je asi nejelegantnější, status bar nejsnadnější. Možností řešení je mnoho, pro paveku vlož do ThisWorkbook
Public Napis As Shape
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Napis.Delete
End Sub
Private Sub Workbook_Open()
Set Napis = ActiveSheet.Shapes.AddTextEffect(msoTextEffect22, _
"Nyní pracuješ na listu " & ActiveSheet.Name & " buňce " & ActiveCell.Address(False, False), "Impact", 36#, msoFalse, msoFalse _
, 246.75, 282.75)
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Set Napis = ActiveSheet.Shapes.AddTextEffect(msoTextEffect22, _
"Nyní pracuješ na listu " & Sh.Name & " buňce " & ActiveCell.Address(False, False), "Impact", 36#, msoFalse, msoFalse _
, 246.75, 282.75)
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Napis.Delete
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
Napis.Delete
Set Napis = ActiveSheet.Shapes.AddTextEffect(msoTextEffect22, _
"Nyní pracuješ na listu " & Sh.Name & " buňce " & Target.Address(False, False), "Impact", 36#, msoFalse, msoFalse _
, 246.75, 282.75)
End Sub
Pak je to poněkud složitější třeba tak:
Application.ScreenUpdating = True
With ActiveSheet.Shapes.AddTextEffect(msoTextEffect22, _
"Všeho zanech nyní za tebe pracuje makro", "Impact", 36#, msoFalse, msoFalse _
, 246.75, 282.75)
.Name = "Info"
End With
Application.ScreenUpdating = False
a na konci:
Application.ScreenUpdating = True
ActiveSheet.Shapes("info").Select
Selection.Delete
Ostatní nabízejí velmi sofisstikovná řešení já používámApplication.DisplayStatusBar = True
Application.StatusBar = "Makro pracuje"
Lze doplnit o proměnné nebo text, který mě informuje o průběhu zpracování makra a přet exitem dámApplication.StatusBar = False
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.