Bigelk Skrevet 9. februar 2018 Del Skrevet 9. februar 2018 Hei, Jeg har en inputbox hvor jeg legger inn et lokasjonsnummer. Dette lokasjonsnummeret skal inneholde 6 siffer, jeg kjører en sjekk for å sjekke at lokasjonsnumeret som blir skrevet inn faktisk er på 6 siffer, men her får jeg ikke tilbake de verdiene jeg forventer Hvis jeg deklarer variabelen som long gir Len() tilbake 4 hvis jeg bruker Double gir Len() tilbake 8 lokasjon gir tilbake 6 bytteLokasjon gir tilbake 4 Dim bytteLokasjon as long, lokasjon as long lokasjon = ActiveCell.Value bytteLokasjon = Application.InputBox("Hvilken lokasjon vil du sjekke?", "Sjekk Lokasjon") MsgBox Len(bytteLokasjon) & " " & Len(ActiveCell.Value)' sjekker lengde If bytteLokasjon = False Then Exit Sub ElseIf bytteLokasjon = lokasjon Then Exit Sub ElseIf Len(bytteLokasjon) <> 6 Then MsgBox "Et lokasjonsnummer må inneholde 6 siffer" Exit Sub End If Mvh Torbjørn Lenke til kommentar
Brulejus Skrevet 9. februar 2018 Del Skrevet 9. februar 2018 Prøv Variant i stedet for Long på bytteLokasjon. Lenke til kommentar
Bigelk Skrevet 9. februar 2018 Forfatter Del Skrevet 9. februar 2018 Hei, Det har jeg gjort, men da oppstår det ny utfordring. Jeg bruker denne verdien for å finne en lokasjon i en liste, hvis den er deklarert som variant finner den ikke denne verdien.. Lenke til kommentar
Brulejus Skrevet 9. februar 2018 Del Skrevet 9. februar 2018 Siden Len() er ment på String bør du da sikkert lese det inn som String i stedet for Long. Hvis du trenger å gjøre beregninger kan du heller konvertere til Long ved å bruke CLng(tekstverdi). Lenke til kommentar
ExcelGuru Skrevet 9. februar 2018 Del Skrevet 9. februar 2018 (endret) Hei på deg. Hvis du bruker to variabler - en til å sjekke lengde og en til å søke, får du dekket begge behov. Len returnerer helt korrekt antall byte i en long og en double. Sånn omtrent: Sub lokasjon() Dim Streng As String Dim bytteLokasjon As Long, lokasjon As Long lokasjon = ActiveCell.Value Streng = Application.InputBox("Hvilken lokasjon vil du sjekke?", "Sjekk Lokasjon") If Streng <> "False" Then bytteLokasjon = Streng End If MsgBox Len(Streng) & " " & Len(Str(ActiveCell)) ' sjekker lengde If Streng="False" Then Exit Sub ElseIf bytteLokasjon = lokasjon Then Exit Sub ElseIf Len(Streng) <> 6 Then MsgBox "Et lokasjonsnummer må inneholde 6 siffer" Exit Sub End If End Sub Endret 9. februar 2018 av ExcelGuru Lenke til kommentar
Megaoctane Skrevet 9. februar 2018 Del Skrevet 9. februar 2018 Trenger bare å gjøre en endring i linjen: MsgBox Len(CStr(bytteLokasjon)) & " " & Len(ActiveCell.Value) ' sjekker lengde CStr gjør en verdi til string. Lenke til kommentar
Bigelk Skrevet 9. februar 2018 Forfatter Del Skrevet 9. februar 2018 Kjempe! fungerer som en drøm! Tusen takk for hjelpen alle sammen lokasjon = ActiveCell.Value bytteLokasjon = Application.InputBox("Hvilken lokasjon vil du sjekke?", "Sjekk Lokasjon") If bytteLokasjon = False Then Exit Sub ElseIf bytteLokasjon = lokasjon Then Exit Sub ElseIf Len(CStr(bytteLokasjon)) <> 6 Then MsgBox "Et lokasjonsnummer må inneholde 6 siffer" Exit Sub End If mvh Torbjørn Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå