Nejprve pro Kociho - KT=Kontigenční tabulka.
Pak pro Kempese, pokud jde jen o počty, tak jsem to v příloze řešil makrem bez KT (KT nemám rád). Pokud by šlo o větší objem dat a nejen počty, tak bych osobně šel cestou napojení jednoho excelového souboru do Accesu a k získání dat bych použil dotazy.
M@
Osobně bych to řešil přes pomocný sloupec, ale šlo by to i přes součin.skalární již zde několikrát zmiňovaný.
M@
Načítání Comboboxů v příloze, řešeno pomocí pojmenovaných oblastí.
M@
Ahoj,
funkce SVYHLEDAT - mrkni na článek http://wall.cz/funkce-svyhledat.a60.html
M@
Třeba ...Public Sub pokus()
For i = 1 To Sheets.Count
Sheets(i).Cells(1, 1) = i
Next
End Sub...
M@
Pro Marficka:
Lze
nove_jmeno = Str(Cells(1, 9)) + " faktura" ' buňka I1 - číslo faktury
' nastavení cesty pro uložení
Dim filename As Variant
filename = Application.GetSaveAsFilename(nove_jmeno, "Excel (*.xls),*.*,Excel 07 (*.xlsm),*.*,", 1, "Uložit jako")
If filename = False Then Exit Sub
cele_jmeno = filename
' uložení sešitu do standadní cesty ukládání
ActiveWorkbook.SaveAs (cele_jmeno)
kam zařadit snad psát nemusím :-)
M@
Řešení to má, ale spíš v použití MS Access a databází, než v Excelu.
Další možností by byly dva soubory excelu (nebo jen jeden a samostatný prográmek), kdy jeden soubor by byl zadávací a druhý by sloužil jako DB.
Uživatel by spustil zadávací tabulku (Excel, nebo EXE) a k zápisu do DB souboru by došlo až při stisku tlačítka zapsat, kdy by program otevřel daný DB soubor, zapsal, uložil a ukončil, tímto by se snížil čas blokování sešitu na minimum potřebné pro vložení dat a ukončení, tipuji tak max 3-4 sec, ale i zde může nastat situace, kdy dva uživatelé stisknou tlačítko současně - to by pak jednomu mělo napsat, že se zápis nezdařil a ať to zkusí znova (asi se to často stávat nebude). Když by někdo pak potřeboval data z DB sešitu, tak by si ho musel otvírat pouze pro čtení.
M@
Zkoušel jsem třeba:
Dim a As Integer
a = 5
ActiveCell = a
ActiveCell.NumberFormat = "#,##0.00 Kč"
M@
Ahoj,
já bych to viděl na fŕum: http://wall.cz/index.php?m=topic&id=1991
Řekl bych, že je to totéž.
M@
DeleteSetting jsem dřív nikdy nezkoušel, teď jsem zkusil a existuje :-)
DeleteSetting "Aplikace", "Demo", "Datum"
M@
Tak trochu nevýhodou zápisu data přímo v souboru je, že uživatel soubor se zapsaným datem nemusí uložit :-), leda by uložení se zapsaným datem bylo provedeno makrem po spuštění.
Jak jsem psal o zápisu do registru, tak funguje:
ZápisSaveSetting "Aplikace", "Demo", "Datum",date+1
Načteníexdatum = GetSetting("Aplikace", "Demo", "Datum", date +1)
M@
Zkus mezi to next a screenupdating přidat následující kód:
Dim pos1 As Single
pos1 = 3
For rd = 3 To ActiveSheet.UsedRange.Rows.Count
If Cells(rd, 2) = "" Then
If rd - pos1 >= 1 Then Range("A" & pos1, "V" & rd - 1).Sort Key1:=Range("N" & pos1), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
pos1 = rd + 1
End If
Next
'definice proměnné jako datum
Dim exdatum As Date
'nastavení data expirace - než pošleš můžš změnit na datum kdy chceš aby platnost vypršela
exdatum = "26.7.2010"
'pokud aktuální datum je větší než expirační datum tak ...
If Date > exdatum Then
'...zamknout buňky
Cells.Locked = True
'...zamknout list s heslem "heslo" - můžeš nastavit cokoliv
List1.Protect "heslo"
'jinak
Else
'odemkni (toto else a odemčení tam ani nemusí být, ono když to tady necháš a někdo si na pc pusune čas zpět, tak se buňky odemknou, takže já bych to smazal, měl jsem to tam jen pro test.
List1.Unprotect "heslo"
End If
End Sub
Jinak šlo by to řešit i přes registry počítače, kdy při prvním spuštění zapíšeš datum a pak už jen porovnáváš, ale je to zápis do registru bez vědomí uživatele, bohužel to ale dělá spousta programů a pak ty registry nemají vypadat jak vypadaj :-). Ono i tohle zkušenější uživatel obejde smazáním data z registrů.
Teď mě tak napadá, že zápis do registrů jsem zatím dělal jen přes VB, ale ve VBA jsem to ještě nezkoušel, no ale asi by to jít mělo :-)
M@
rd je číselná proměnná představující číslo řádku se kterým zrovna pracuji. Může být pojmenovaná jakkoliv, třeba radek (for radek = 3 ...)
M@
Ahoj,
sice to makrem půjde (ne moc snadno), ale jinak je to typický adept na slučovací dotaz v MS ACCESS, no a jelikož to jde v ACCESSU, tak to s největší pravděpodobností půjde i v Excelu přes kontingenční tabulku a vícenásobné oblasti sloučení - a jelikož já kontingenční tabulky nerad (radši se přepnu do Accessu :-) ), tak věřím že se najde někdo kdo poradí jak na to :-).
M@
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.