< návrat zpět

MS Excel


Téma: Formát vstupního pole ve VBA rss

Zaslal/a 20.10.2013 17:37

Zdravím,
potřeboval bych poradit a to jak ve vstupním poli ve formuláři excelu (VBA) naformátovat číslo, aby mi oddělovalo např tisíce, nebo třeba přidalo %, pokud se odkazuji na pole v excelu, kde to tak je. Nejde mi to ve vlastnostech ovládacího prvku nastavit :-(
Plus ještě jeden dotaz, když mám otevřené okno formuláře (chci do něj do vstupních polí zapisovat), tak mi nejde překlikávat mezi jinými soubory v excelu, je na to nějaký fígl, jak tomu zamezit, spíše přeskakování povolit?
Moc děkuji za případné nápady a rady.
Jirka

Zaslat odpověď >

Strana:  1 2 3   další »
icon #015759
avatar
Ten prvý problém asi bude treba ošetriť nejakým kódom.

Ten druhý (preklikávanie atď.): Pre formulár musíš nastaviť vlastnosť ShowModal na FALSEcitovat
#015760
avatar
Ahoj,
to asi nebude ono, zkusil jsem to, ale pak mi to hází chybu makra...přikldádám model, kde bych to potřeboval nastavit, jak formáty, tak to překlikávání mezi sešity excelu.
Díky moc
Příloha: zip15760_business-case_secured_v3.zip (35kB, staženo 16x)
citovat
icon #015761
avatar
Jirko: to asi nebude ono, zkusil jsem to, ale pak mi to hází chybu makra.
Ale je to ono, nastav ShowModal na FALSE u všetkých formulárov (máš ich 7) a uvidíš.

Tie formáty neviem, na to by som sa musel pozrieť a priznám sa, moc sa mi nechce, to asi nevyriešim za pár minút..citovat
#015763
Opičák
Dospěl jsem ke stejnému závěru jako AL a vyzkoušel.
Jen používám u formulářů zápis "Show 0" (Show nula)citovat
icon #015765
avatar
K tým formátom v textboxoch - nejako takto, je to len návod, budeš si musieť dotvoriť:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox1 = Format(CDbl(Me.TextBox1.Value), "#,##0.00")
Me.TextBox1.Font.Bold = True
End Sub
citovat
#015774
Opičák
podobný způsob, který číslo formátuje ihned, je přehlednější při zápisu, ale netuším jak tam dostat měnu (Kč)
Příloha: zip15774_format-textboxu.zip (13kB, staženo 16x)
citovat
icon #015780
eLCHa

Opičák napsal/a:

...ale netuším jak tam dostat měnu (Kč)


Jen tak z legrace a taky ukázka využití static proměnné

Private Sub TextBox1_Change()
Const SUFFIX As String = " Kč"

Static bCallingItself As Boolean
If Not bCallingItself Then
bCallingItself = True

With TextBox1
.Value = Format(Replace(.Value, SUFFIX, vbNullString) / 1, Format:="#,###") & SUFFIX
.SelStart = Len(.Value) - Len(SUFFIX)
End With 'TextBox1
End If

bCallingItself = False
End Sub


Při vkládání do buňky to pak zase nesmíte zapomenout dát pryč ;)citovat
#015801
avatar
Díky moc všem za radu :-)citovat
#015804
Opičák
@ eLCHA
i já děkuji za ukázku, ale mám k tomu ještě dotaz.

příklad: omylem zapíšu číslo, třeba jedna, ale chci zapsat něco jiného, dám backspace a error. Já jsem to tam řešil "on error resume next". Je na to nějaký lepší LÉK ?
Jinak samozřejmě perfektní,.....no...jako vždy. 5citovat
icon #015805
eLCHa
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ě ;)citovat

Strana:  1 2 3   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

rozpis zápasů hráčů pro utkání dvou týmů

Anonym • 25.5. 11:54

Hromadné přepsání

elninoslov • 24.5. 10:29

Hromadné přepsání

Nomi • 24.5. 8:32

Index - každý rok začít od 1 Power Query

Alfan • 23.5. 9:17

nepřímý odkaz

elninoslov • 23.5. 0:00

nepřímý odkaz

bordov • 22.5. 18:35

vrácené hodnoty

Anonym • 22.5. 15:46