On je to Formulář a ne Ovládací prvek. Tak to je něco jiného. Něco jsem sesmolil tak se koukni.
Něco jako tohle?
Ten vzor byl samozřejmě napsan pro TextBox1.
Ty můžeš mít v Listu třeba TextBox2, nebo TextBox3 atd.
Nejdříve zjisti ve Nabídce-Vlastnosti, z jakého TextBoxu chceš získat text.
Proč do schránky? V proceduře lze tento text přiřadit přimo do range:
Range(xy) = ActiveSheet.TextBox1.Text,
nebo ho přiřadit proměnné a pak s touto dále pracovat:
nTbTxt = ActiveSheet.TextBox1.Text
Range(xy) = nTbTxt
Jak to funguje? Pochopit princip? Ideálně John Walkenbach - Microsoft Office Excel Programování ve VBA!
A jinak:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rdW As Long, slW As Byte
slW = Target.Column
'kdyz sloupec dat = 1
If slW = 1 Then
Application.EnableEvents = False
'kdyby bylo vice radku
For rdW = Target.Row To Target.Row + Target.Rows.Count - 1
'je prazdna nebo neni cislo
If IsEmpty(Cells(rdW, slW)) Or Not IsNumeric(Cells(rdW, slW)) Then
MsgBox "Nepovolena hodnota !"
Range(Cells(rdW, slW + 1), Cells(rdW, slW + 2)).ClearContents
Else
'vlozi aktualni datum
Cells(rdW, slW + 1) = Date
'vlozi aktualni datum i cas
Cells(rdW, slW + 2) = Now
End If
Next rdW
Application.EnableEvents = True
End If
End Sub
Ještě jedna možnost!
No je třeba si rozmyslet, kterou cestou se dáš.
Mi se taky stává, že se sešit vydá svou vlastní cestou.
Ukládá si pracovní zálohy, které jdou smazat až po restartu, pohrává si s formáty, dělá, že nezná volanou proceduru atd. Pak rovněž volím překopírování do nového sešitu. Ale buď v kodu explicitně nastavím obecný formát, nebo jsouli na listu nějaké datumy nastavím přímo formát číselný. Zatím to vždy pomohlo.
Ti EXCEL nehlásil "CYKLICKÝ ODKAZ"?
Zkontroluj List1.Sloupec(F).
Uprav List1.Sloupec(H).
Snad na to příjdeš sám.
No ještě jsem neviděl, aby podmíněné formátování něco spočítalo.
Ještě se k tomu musím vrátit.
Došlo mi to, až když sem vypnul comp.
To by přičetlo i řádky s nulovými hodnotami a to mi nechceme.
Takže pro tabulku s max. řádky do 150.
Sečte řádky pro které platí, že v sloupci A je větší než 0.
=SUMA(($A$3:$A$150>0)*(H$3:H$150>=$G$3:$G$150)*(H$3:H$150<=$F$3:$F$150))
Sečte řádky pro které platí, že v sloupci A je neprázdná.
=SUMA((NE(JE.PRÁZDNÉ($A$3:$A$150)))*(H$3:H$150>=$G$3:$G$150)*(H$3:H$150<=$F$3:$F$150))
Lze použít i fce POSUN.
Do sloupce A v řádku pro výsledky například 151
buď
=POČET(A$3:A$150)
nebo
=SUMA((NE(JE.PRÁZDNÉ($A$3:$A$150)))*1)
Pak do sloupce H
=SUMA((POSUN(H$3;;;$A151)>=POSUN($G$3;;;$A151))*(POSUN(H$3;;;$A151)<=(POSUN($F$3;;;$A151))))
Všechny vložit CTRL+SHIFT+ENTER
No snad už tam nemám nikde chybu.
Ono by to šlo pomocí maticového vzorce, ale to by si musel definovat rozsah tabulky, to znamená maximální počet řádků v daném sloupci!
Pro max 139
=SUMA((R3C1:R139C1=1)*(R3C:R139C>=R3C7:R139C7)*(R3C:R139C<=R3C6:R139C6))
vložit CTRL+SHIFT+ENTER
nebo tedy pro sloupec R
=SUMA(($A$3:$A$139=1)*(R$3:R$139>=$G$3:$G$139)*(R$3:R$139<=$F$3:$F$139))
vložit CTRL+SHIFT+ENTER
Pardon, pokud nezáleží na barvě je třeba vynachat první podmínku.
tzn.
=SUMA((R3C:R139C>=R3C7:R139C7)*(R3C:R139C<=R3C6:R139C6))
vložit CTRL+SHIFT+ENTER
nebo tedy pro sloupec R
=SUMA((R$3:R$139>=$G$3:$G$139)*(R$3:R$139<=$F$3:$F$139))
vložit CTRL+SHIFT+ENTER
Je to kod od John Walkenbach pro 2000-2002.
Mně to na 2003 jede normal, k 2007 nemám přístup.
Zkus si dát v F1 "FileSearch" a porovnej, vyzkoušej. Takhle víc udělat nemůžu.
Když přesuneš CTRL+X a CTRL+V tak se přesunou i odkazy v podmínce. Zakázat přesun lze zamknutím Listu v nabídce Nástroje-Zámek-ZamknoutList. U těchto buněk pro možnost editace zruš zámek ve Formát buňky.
sem přehlédl
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.