Gå til innhold

Tekstgjenkjenning i VB fra Excel


Anbefalte innlegg

Sitter her med hovedprosjektet mitt, hvor jeg skal utvilke et regneark for bruk i industrien.

 

Problemet mitt akkurat nå, er at jeg har laget en VB funksjon, som jeg vil skal gjenkjenne tekst fra et regneark.

Jeg har hatt litt java før, men thats it med erfaring når det kommer til programmering.

Det jeg har nå, er: (* er kommentarer og ikke med i funksjonen)

 

Function test(var1#, var2#)

If var1 = "bil" Then

test = 5

*Her vil jeg at VB skal gjenkjenne teksten bil, og så sette funksjonen 'test' til verdien 5

Elseif var2 = "lastebil" Then

test = 10

*samme som over, men lastebil og verdien 10

Else test = display(" Dette blir feil")

*her vil jeg at test skal returnere beskjeden 'Dette blir feil' hvis ikke inputen er 'bil' eller 'lastebil'

End If

End Function

 

Takk for all hjelp!

Lenke til kommentar
Videoannonse
Annonse

Noe som følgende, muligens?

Public Function Test(Var1 As String, Var2 As String) As Long

 

' LCase = ToLower.

If LCase(Var1) = "bil" Then

Test = 5

Elseif LCase(var2) = "lastebil" Then

Test = 10

Else

' Her har vi mange alternativer til brukerinteraksjon. Best blir det nok

' å invokere (likså throw) en "exception" ved å kalle den innebyggede funksjonen Err.Raise:

Err.Raise 1000, "Test", "Dette blir feil"

End If

 

End Function

Lenke til kommentar
Det er vel derfor han bruker LCase, for å gjøre teststrengen til "Lower Case" før den testes.

 

Ja, det var det jeg trodde.

 

Får den enda ikke til å fungere, kanskje noen trenede øyne ser noe feil?

 

Public Function test(Klasse As String, Brd_Dfm As String) As Long

' LCase = ToLower.
If LCase(Klasse) = "Klasse 8.8" And LCase(Brd_Dfm) = "Brudd" Then
test = 800
ElseIf LCase(Klasse) = "Klasse 8.8" And LCase(Brd_Dfm) = "Deformasjon" Then
test = 640
ElseIf LCase(Klasse) = "Klasse 10.9" And LCase(Brd_Dfm) = "Brudd" Then
test = 1000
ElseIf LCase(Klasse) = "Klasse 10.9" And LCase(Brd_Dfm) = "Deformasjon" Then
test = 900
Else
' Her har vi mange alternativer til brukerinteraksjon. Best blir det nok
' å invokere (likså throw) en "exception" ved å kalle den innebyggede funksjonen Err.Raise:
Err.Raise 1000, "Test", "Dette blir feil"
End If

End Function

 

 

Edit; tror jeg ser feilen... Jeg bruker LCase til å gjøre om inputen til lowercase, men det den sjekker opp mot, har stor forbokstav?

 

 

Det blir rett hvis jeg gjør det om til LCase(Klasse) = "klasse 10.9" osv...? Evt fjerner LCase?

Endret av Trazor
Lenke til kommentar

Litt utydelig hva "fra excel" er her også. Men 10.9 i din kode er tekststreng og ikke tallverdien 10,9 , som har komma eller punktum eller annet avhengig av en haug med språkvalg.

Vanlig trøbbel ved manuell input er også mellomrom før eller etter, og doble mellomrom inni. Koden din bør ta høyde for alt dette.

Lenke til kommentar
Litt utydelig hva "fra excel" er her også. Men 10.9 i din kode er tekststreng og ikke tallverdien 10,9 , som har komma eller punktum eller annet avhengig av en haug med språkvalg.

Vanlig trøbbel ved manuell input er også mellomrom før eller etter, og doble mellomrom inni. Koden din bør ta høyde for alt dette.

 

Med "fra excel" mener jeg at den skal ta det som står i en celle, gjenkjenne det, og så utføre en handling.

10.9 er betegnelsen på en bolt, som angir flytegrense og strekkfasthet :)

 

Har forøvrig fått funksjonen til å virke nå, var bare å endre inputen slik at den ikke inneholdt store bokstaver.

Lenke til kommentar

Bare en anbefaling - det er flere måter å gjøre dette på som over, men skal du sjekke mange valg så prøv (dette er mer generell kode):

 

function Test(typ as string) as short

 select case LCase(typ)
case "bil"
  return 5
case "lastebil"
  return 10
case else
 return 0
 'Eller annen feilhåndtering
 end case

end function

F.eks.:

 dim ret as short
 ret = Test("Bil")
 if ret = 0 then
MsgBox("feil!")
 else
'OK
 end if

Lenke til kommentar

Sant nok. Men VBA (hvis det nå er det det er snakk om) er litt spesielt ved at den ikke kompileres, den kjører runtime. Det er lite dill å endre kode etter behov.

Men det er klart, snakker vi mange brukere på nettverk så bor sånne variabler best i en enkelt sentral databasefil som oppdateres der og bare der. Så dette er et spørsmål om design og antall brukere. OP er gjerrig på opplysninger.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...