10 hodnot - počáteční čas 12:00 - interval 30 minut
Range("A1:A10").Value = Evaluate("(""12:00"")/1+(ROW(1:10)-1)*(""0:30"")/1")
To není názor, to je fakt ;)
Nevím kdo vám co říkal, ale asi jste to špatně pochopil ;)
Nepište makro pro každý prvek - napište jedno a odkazujte se na něj
Dobře, tak ještě jednou a pomalu
Textové pole (TextBox) vrací textovou hodnotu. Jak si ji zobrazíte, záleží na vás. Nicméně, i když tam máte číslo, je to pořád text.
Tento text můžete převést na číslo, ale když už to bude číslo, nebude to mít žádný formát (nebude mít oddělené tisíce).
S tímto číslem můžete provést nějaké výpočty a výsledek si naformátovat podle přání - naformátováním ho zase převedete na text.
Pokud s tímto výsledkem budete chtít něco dělat - budete ho muset znovu převést na číslo.
Nic jiného vám tady nikdo neřekne.
Jirka32 napsal/a:
potřebuji jen aby mi výstup ze zadavacího pole platil za číslo (nikoliv text) a měl formát s oddělením tisíců
Asi takhle - vy jste tam sice dal On Error, ale zbytečně. Váš kód žádnou chybu nevyvolá.
U mne tu chybu vyvolává to / 1
Replace(.Value, SUFFIX, vbNullString) / 1, protože jsem mu dovolil textový řetězec (tedy nejen po stisku BckSp) dělit 1.
On ten kód není dokonalý ani náhodou - stiskněte si např. klávesu Del ;)
V podstatě bychom mu měli zakázat, aby pracoval s jinou, než číselnou hodnotou a k tomu můžeme využít další Static proměnné ;)
Private Sub TextBox1_Change()
Const SUFFIX As String = " Kč"
Static bCallingItself As Boolean
Static sPreviousValue As String
Dim iNewValue As Long
If Not bCallingItself Then
bCallingItself = True
With TextBox1
If Not .Value = SUFFIX Then
On Error Resume Next
iNewValue = Replace(.Value, SUFFIX, vbNullString) / 1
Dim bError As Boolean
bError = Not Err.Number = 0
On Error GoTo 0
If Not bError Then
.Value = Format(iNewValue, Format:="#,##0") & SUFFIX
sPreviousValue = .Value
Else
.Value = sPreviousValue
End If
.SelStart = Len(.Value) - Len(SUFFIX)
Else
.Value = vbNullString
End If
End With 'TextBox1
End If
bCallingItself = False
End Sub
Teď už by to mělo být správně ;)
Opičák napsal/a:
...ale netuším jak tam dostat měnu (Kč)
Ale lze skrýt okno ;)
Tak se mi podařilo zavolat Excel4 vlastní funkci pomocí VBA
Takže i ostatní postižené národy si mohou pohodlně napsat vlastní fci ve VBA a použít pro Evaluate lokalizované názvy funkcí
Function EVALUATE_VBA(Vzorec As String)
' Makro1!EVALUATE_EXCEL4 - pouze následující 2 řádky
' =ARGUMENT("vzorec"; 2)
' =NÁVRAT(VYHODNOTIT(vzorec))
Dim vVysledek
vVysledek = Application.Run("Makro1!EVALUATE_EXCEL4", Vzorec)
'a tady si teď s proměnnou vVysledek můžeme dělat pohodlněji co chceme ;)))
EVALUATE_VBA = vVysledek
End Function
Proveďte svoje "bádání" úplně stejně na jiném PC. Pokud to bude dělat, taxte možná i něco objevil.
Ale pochybuju, tipuju to na problém v instalaci, protože mě to nespadlo ani jednou, i když jsem se snažil ;)
Já hlavně nechápu, jaxe vám podařilo pojmenovat modul
jako "Modul 1", když mezera není povolený znak
Přejmenujte na "Modul1" a zkuste.
V souboru Form.xls žádná makra nemám.
Vlastní formát
Například:
"+420 ("000")" 000" "000
Áno - mýlite sa ;)
Využijte vlastností ListFillRange (odkaz na oblast se seznamem hodnot) a LinkedCell (aktuální hodnota)
Pokud dobře vidím, používáte formulářové prvky. Ty já nepoužívám, používám ActiveX, takže netuším.
Nebo můžete sloučit A1:B1 a A2:B2 a použít Ověření dat
Myslíte - vybrat Január nebo 2012, uložit, zavřít, otevřít a pak ta máte něco jiného?
Mně to tam zůstává.
Teď jsem mimo. Co je Drop Down?
Příloha?
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.