Excel VBA Val-funktion
Valfunktion i vba kommer under strängfunktionerna , det är också en inbyggd funktion i VBA som används för att få de numeriska värdena från en datavariabel, antag att om en variabel har ett värde som A10 så ger valfunktionen oss 10 som utdata, det tar en sträng som ett argument och returnerar siffrorna i strängen.
VAL står för VALUE i VBA-terminologi. Denna funktion konverterar strängen som innehåller siffror till ett verkligt nummer. Om du till exempel anger textsträngen "1234 Global" returnerar den endast den numeriska delen, dvs. 1234.
Ofta, när vi laddar ner eller hämtar data från webbnummer, lagras vanligtvis som textvärden i ett kalkylark. Omvandling av text till siffror är den svåraste uppgiften om du inte är medveten om rätt funktion i Excel. Som en vanlig kalkylfunktion har vi en funktion som heter VALUE, som konverterar alla strängar som representerar siffror till exakta tal med en enkel funktion i kalkylbladet. I den här artikeln visar vi hur detta kan uppnås i VBA med VAL-funktionen.

Syntax
Den har bara ett argument, dvs String.

- Sträng: Det är helt enkelt ett strängvärde vi försöker få ut den numeriska delen.
Så, VAL-funktionen omvandlar den levererade strängen till ett numeriskt värde.
Obs! VAL-funktionen ignorerar alltid mellanslagstecken och fortsätter att läsa siffrorna efter mellanslagstecken eller -tecken.Till exempel, om den medföljande strängen är "145 45 666 3", kommer den att ignorera mellanslagstecken och returnera resultatet som "145456663".
Exempel på VAL-funktion i Excel VBA
Exempel 1
Låt oss prova det första exemplet med ett enkelt nummer, dvs. ”14 56 47.”
Koden nedan är för dig.
Koda:
Sub Val_Example1 () Dim k As Variant k = Val ("14 56 47") 'Konvertera ovanstående som 145647 MsgBox k End Sub

När du kör VBA-kod med F5-tangenten eller manuellt kommer den att returnera resultatet som "145647" genom att ignorera alla mellanslagstecken som visas i bilden nedan.

Exempel 2
I det här exemplet ser vi vad resultatet av strängen är “+456”.
Koda:
Sub Val_Example2 () Dim k As Variant k = Val ("+ 456") 'Konvertera ovanstående som 456 MsgBox k End Sub

Du kan köra den här koden manuellt eller genom F5-tangenten för att returnera värdet som 456 genom att ignorera +456.

Exempel # 3
Låt nu prova samma nummer med ett negativt tecken.
Koda:
Sub Val_Example3 () Dim k As Variant k = Val ("- 456") 'Konvertera ovanstående som -456 MsgBox k End Sub

Den här koden returnerar värdet som -456 endast för att numret med operatörstecken ska visas.

Exempel 4
Låt oss nu prova den här strängen "100 kg".
Koda:
Sub Val_Example4 () Dim k As Variant k = Val ("100 KG") 'Ignorerar KG och returnerar endast 100 MsgBox k End Sub

Om du kör den här koden manuellt eller använder F5-tangenten ignorerar denna kod ovan "KG" och returnerar endast "100" i meddelandefältet VBA.

Exempel # 5
Försök nu datumsträngen, dvs. ”14-05-2018”.
Koda:
Sub Val_Example5 () Dim k As Variant k = Val ("14-05-2019") 'Returnerar 14 som resultat. MsgBox k End Sub

Ovanstående kod returnerar 14 som resultat eftersom VAL-funktionen bara kan hämta det numeriska värdet tills det hittar något annat än numeriskt tecken.

Exempel 6
Försök nu strängen “7459Good456”.
Koda:
Sub Val_Example6 () Dim k Som Variant k = Val ("7459 Bra 456") 'Returnerar 7459 som resultat. MsgBox k End Sub

Detta extraherar siffrorna tills den hittar det icke-numeriska tecknet, dvs resultatet är 7459. Även om det finns numeriska värden efter det icke-numeriska värdet ”Bra” ignorerar det siffror helt efter det.

Exempel # 7
Försök nu strängvärdet “H 12456”.
Koda:
Sub Val_Example7 () Dim k Som Variant k = Val ("H 12456") 'Returnerar 0 som resultat. MsgBox k End Sub

Kör ovanstående kod med snabbtangenten F5 eller manuellt, sedan returnerar resultatet som noll. Eftersom det allra första tecknet i strängen vi har levererat är ett icke-numeriskt tecken så är resultatet noll.

Exempel # 8
Försök nu den här strängen “24545. 2 ”.
Koda:
Sub Val_Example8 () Dim k As Variant k = Val ("24545. 2") 'Returnerar 24545.2 som resultat. MsgBox k End Sub

Koden returnerar resultatet som 24545.2 eftersom VBA VAL-funktionen betraktar teckenpunkten (.) Som decimaltecken och returnerar resultatet därefter.
