Datový typ řetězce VBA (proměnná dimenze)

Typ proměnné řetězce

Datový typ String je jedním z nejběžnějších datových typů ve VBA. Ukládá „řetězce“ textu.

Chcete -li deklarovat proměnnou String, použijte příkaz Dim (zkratka pro Dimension):

1 Dim strName jako řetězec

K přiřazení hodnoty proměnné použijete znaménko rovnosti:

1 strName = "Fred Smith"

Uvedení do postupu vypadá takto:

12345678 Sub strExample ()'deklarujte řetězecDim strName jako řetězec“naplňte řetězecstrName = "Fred Smith"'zobrazit pole se zprávouMsgBox strnameEnd Sub

Pokud spustíte výše uvedený kód, zobrazí se následující okno se zprávou.

Proměnná pevného řetězce

Ve skutečnosti existují 2 typy řetězcových proměnných - pevná a proměnná.

Proměnná řetězec „proměnná“ (zobrazená v předchozím příkladu) umožňuje libovolnou délku řetězce. To je nejčastější.

Proměnná řetězce „fixed“ definuje velikost řetězce. Pevný řetězec může obsahovat až 65 400 znaků.

1 Dim strName jako řetězec *20

Když definujete pevnou proměnnou, počet znaků v proměnné se uzamkne, i když použijete méně znaků.

Všimněte si mezer v níže uvedeném obrázku - proměnná má zástupné symboly pro zbývající znaky v řetězci, protože „Fred Smith“ má méně než 20 znaků.

Pokud jste však deklarovali řetězec bez zadání délky, řetězec pojme pouze tolik znaků, kolik je mu předáno.

Deklarujte proměnnou řetězce na úrovni modulu nebo na globální úrovni

V předchozím příkladu jste deklarovali proměnnou String v rámci procedury. Proměnné deklarované pomocí procedury lze použít pouze v rámci této procedury.

Místo toho můžete deklarovat proměnné String na úrovni modulu nebo na globální úrovni.

Úroveň modulu

Úroveň modulu proměnné jsou deklarovány v horní části modulů kódu pomocí Ztlumit tvrzení.

Tyto proměnné lze použít s jakoukoli procedurou v tomto modulu kódu.

Globální úroveň

Globální úroveň proměnné jsou také deklarovány v horní části modulů kódu. Místo použití Ztlumit prohlášení, používáte Veřejnost prohlášení, které označuje, že proměnná řetězce je k dispozici pro použití v celém vašem projektu VBA.

1 Veřejný strName jako řetězec

Pokud deklarujete proměnnou řetězce na úrovni modulu a použijete ji v jiném modulu, dojde k chybě.

Pokud však použijete k deklaraci řetězcové proměnné klíčové slovo Public, k chybě nedojde a procedura proběhne perfektně.

Převést hodnoty uložené jako řetězec

Může nastat čas, kdy budete mít hodnoty v aplikaci Excel uložené jako text - například jste mohli importovat soubor CSV, který místo čísel mohl vnést text.

Všimněte si, že hodnota v A1 je zarovnána doleva, což označuje textovou hodnotu.

Můžete použít a Funkce VBA lze použít k převodu těchto čísel na text

12345678 Sub ConvertValue ()“naplňte řetězecstrQty = Rozsah ("A1")'naplňte dvojníka řetězcemdblQty = strQty'naplňte rozsah číslemRozsah ("A1") = dblQtyEnd Sub

Jakmile kód spustíte, číslo se přesune doprava, což znamená, že je nyní uloženo jako číslo.

To je zvláště užitečné, když procházíte velkým rozsahem buněk.

123456789101112131415 Sub ConvertValue ()Dim strQty As String, dblQty As DoubleDim rw As Integer, i As Integer'spočítejte řádky, které chcete převéstrw = Rozsah ("A1", Rozsah ("A1"). Konec (xlDown)). Rows.Count'smyčku skrz buňky a každou z nich převeďte na čísloPro i = 0 až rw - 1“naplňte řetězecstrQty = Rozsah ("A1"). Offset (i, 0)'naplňte dvojníka řetězcemdblQty = strQty'naplňte rozsah číslemRozsah ("A1"). Offset (i, 0) = dblQtyPříště jáEnd Sub

Výsledkem bude, že všechny buňky jsou poté převedeny na čísla

Už vás nebaví hledat příklady kódu VBA? Zkuste AutoMacro!

Převést řetězec uložený jako hodnoty

Podobně mohou existovat hodnoty, které potřebujete převést z řetězce na hodnotu - například pokud na telefonním čísle požadujete počáteční nulu.

123456789101112131415 Sub ConvertString ()Dim strPhone jako řetězec, dblPhone jako dvojitýDim rw As Integer, i As Integer'spočítejte řádky, které chcete převéstrw = Rozsah ("A1", Rozsah ("A1"). Konec (xlDown)). Rows.Count'smyčku skrz buňky a každou z nich převeďte na čísloPro i = 0 až rw - 1“naplňte řetězecdblPhone = Rozsah ("A1"). Ofset (i, 0)'naplňte dvojníka řetězcemstrPhone = "'0" & dblPhone'naplňte rozsah číslem.'Rozsah („A1“). Offset (i, 0) = strphonePříště jáEnd Sub

Všimněte si toho, že je třeba začít textový řetězec apostrofem (‘) před nulou, abyste aplikaci Excel řekli, aby zadala hodnotu jako řetězec.

wave wave wave wave wave