V tomto článku se podíváme na ovládací prvek TextBox použitý na formuláři. Náš cíl bude jednoduchý – provázat a používat tento prvek ve vazbě na číselnou hodnotu v buňce listu. Říkáte si, že na tom přece nic není, postačí příkaz přiřazení. Možná změníte názor.
Pro zkušební účely postačí formulář s několika textovými poli a jedno tlačítko.
Povšimněte si provázání prvku TextBox7 s buňkou listu B4 prostřednictvím vlastnosti ControlSource.
Chování textových polí vyzkoušíme užitím jednoduchého kódu už při načítání formuláře.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Private Sub UserForm_Initialize() 'čárka Label1 = Range("B2") 'čárka Label2 = Range("B2").Value 'čárka Label3 = Range("B2").Text 'čárka Label4 = CDbl(Range("B2").Value) 'čárka Label5 = Format(Range("B2").Value, "0.00") 'tečka Label6 = Replace(Range("B2").Value, ",", ".") 'tečka TextBox1 = Range("B2") 'tečka TextBox2 = Range("B2").Value 'tečka TextBox3.Value = Range("B2") 'tečka TextBox4.Value = Range("B2").Value 'čárka TextBox5.Text = Range("B2").Value 'čárka TextBox6.Text = Range("B2").Text End Sub |
Tlačítko má za úkol přenést hodnoty z textových polí zpátky do listu Excelu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Private Sub CommandButton1_Click() Dim strOddelovac As String 'desetinný oddělovač 'viz Windows 7: Ovládací panely / Oblast a jazyk, Další nastavení strOddelovac = Application.International(xlDecimalSeparator) 'TextBox1 ... text 6.28 'TextBox5 ... číslo 6,28 'na listu jako text s formátem datumu '1.6.1928, resp. 2028 Range("D2") = TextBox1 'na listu jako číslo 6,28 Range("D3") = TextBox1.Text Range("D4") = TextBox1.Value 'na listu jako text s formátem čísla 6,28 Range("E2") = TextBox5 Range("E3") = TextBox5.Text Range("E4") = TextBox5.Value 'univerzální postup pro číselný výstup Range("F2") = CDbl(Replace(TextBox1, ".", strOddelovac)) Range("F3") = CDbl(Replace(TextBox5, ".", strOddelovac)) End Sub |
Obrázek níže ukazuje stav textových polí po spuštění a klepnutí na tlačítko CommandButton1 v Excelu 2010 CZ běžícím pod operačním systémem Windows 7 CZ.
Slovně okomentuji pouze dvě věci. Zatímco ve sloupci E nabízí inteligentní značky (Smart Tags, viz zelené trojúhelníčky v levých růžcích buněk) převedení textových hodnot na čísla, buňku D2 identifikují jako textově zadané datum. Vazbu buňka-textové pole danou vlastností ControlSource není možné dle mého názoru ovlivnit tak, abych zobrazovala na obou stranách lokalizovaný desetinný oddělovač (čárku). Proto bych se jejímu použití u číselných hodnot vyhýbal.