PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBANumeriskt Ja eller Nej ??Numeriskt Ja eller Nej ??
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2024-03-14 11:46
 

Hej, jag har en cell med en sträng som innehåller värdet "HamnPlats /05"

Nu behöver jag få reda på om den här strängen har ett numeriskt värde i sig !

Jag har provat med IsNumeric och med InStr och med Val men jag får inte till det.

Jag använer koden här nedan för att, tecken för tecken, kolla om det finns något numeriskt och i så fall skapa det nummer platsen har...

For J = 1 To Len(Worksheets("Rapport").Cells(I, 6))

        Vad = Mid(Worksheets("Rapport").Cells(I, 6), J, 1)

        If IsNumeric(Vad) = True Then

            If PlatsNr = "" Then

                PlatsNr = CStr(Mid(Worksheets("Rapport").Cells(I, 6), J, 1))

            ElseIf PlatsNr <> "" Then

                PlatsNr = PlatsNr & Vad

            End If

        End If

Next J

Men jag tänker att det borde finnas ett enklare och ännu snabbare sätt att få ut om en sträng har eller inte har något numeriskt och först då anropa koden som tar ut, tecken för tecken, för att få till platsnumret ?!?

 

/fleXcel

 

Nytt inlägg
 2024-03-14 17:02
 

Det här är en formelvariant. 

=ANTAL(SÖK({0,1,2,3,4,5,6,7,8,9};A1))>0

Du kan ju testa att göra motsvarigheten i VBA. Dvs söka efter 0,1,2 osv och bara köra din "stora" loop  om någon siffra hittas:

 

*******************

Dim i As Integer
Dim x As Integer
Dim test As Boolean

'Starta din i-loop. Jag anger i=1 i exemplet bara för att ha någon cell att testa på 
i = 1

' När du bytt cell  (i -loopen) så sätter du testvariabel till "falskt" innan du börjar tiltta i cellen
test = False

'sök efter sifrorna 0-9. 
' om en siffra hittas avbryts loopen och test= TRUE. Annars söks nästa siffra (om inget hittas returnerar Instr() värdet 0)

For x = 0 To 9
If (InStr(Cells(i, 6), CStr(x)) > 0) Then
    test = True
    Exit For
End If
Next x

'om Test=true kör du bara din "j-loop" annars går du till nästa cell (i)

If test = True Then
' kör din j-loop
End If

*******************

 

Jag vet ärligt talat inte om du tjänar så mycket på det. Men du kan ju testa.

Du skulle eventuellt kunna spara det minsta värtdet från INSTR(). Då kan du starta J-loopen vid det tecknet. Men då måste du alltid gå ignom alla 9 siffror

 

Dim iSifferstart As Integer
Dim IPosition As Integer
iSifferstart = 0
For x = 0 To 9
    IPosition = InStr(Cells(i, 6), CStr(x))
    If (IPosition > 0) Then
        test = True
        If (iSifferstart = 0 Or (IPosition < iSifferstart)) Then iSifferstart = IPosition
    End If
Next x

If test = True Then

For J = iSifferstart  To Len(Worksheets("Rapport").Cells(I, 6))   OSV

End If

 

Nytt inlägg
 2024-04-23 22:34
 

 Hej och Tack jag skall testa din kod när jag får en lucka...

/fleXcel

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBANumeriskt Ja eller Nej ??Numeriskt Ja eller Nej ??

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter