Just nu i M3-nätverket
Gå till innehåll

Ascii koder i Visual Basic Excel


Camilla.L

Rekommendera Poster

Hei!

 

Jag skriver Visual Basic kod som macro i Excel (Engelsk version).

 

Tänkte använda mig av Ascii koder. Då jag vill jämföra om texten i cellen har följande kombination, två siffror, två bokstäver och tre siffror. Någon som har något förslag på hur jag kan lösa detta?

 

Tack på förhand!

mvh Camilla

Ed av moderator

Visual Basic i Excel == Visual Basic for Applications == VBA

flyttar tråden till VBA

 

[inlägget ändrat 2009-05-22 13:33:25 av Monshi]

Länk till kommentar
Dela på andra webbplatser

Du får väl ta och stega igenom strängen i cellen och kontrollera om varje tecken är ett tal eller en siffra. Att testa med ASCII-kod är iofs lätt men du kan även använda...äsch, ett exempel

Sub MyCellCheck()

   Dim myStr As String
   Dim cI As Integer
   Dim cS As Integer
   Dim i As Integer
   Dim iCheck As Integer
   myStr = Range("a1")
   On Error Resume Next
   For i = 1 To Len(myStr)
       iCheck = 100
       iCheck = CInt(Mid(myStr, i, 1))
       If iCheck <> 100 Then
           cI = cI + 1
       Else
           cS = cS + 1
       End If
   Next i
   On Error GoTo 0
   MsgBox cI & " siffror " & cS & " bokstäver"

End Sub

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Hej

 

Har gjort ett forsok utan att lyckas, kan någon se vad jag gjort for fel, tacksam for alla forslag på vad felet kan vara?

 

 'Teste om tagen har ok format
           Dim iCheck As Integer
           Dim myStr As String
           myStr = ""
           If Len(Tag) > 5 Then
               If Len(Tag) < 12 Then
                   j = Len(Tag)
               Else
                   j = 12
               End If
               For i = 6 To a
                   iCheck = 100
                   iCheck = CInt(Mid(Tag, i, 1))
                   If iCheck <> 100 Then
                       Worksheets("Sheet2").Cells(RX, CX) = "I"
                       myStr = myStr & "I"
                   Else
                       Worksheets("Sheet2").Cells(RX, CX) = "C"
                       myStr = myStr & "C"
                   End If

               Next i
               If mystring = "IICCIII" Then
                   Worksheets("Sheet2").Cells(RX, CX).Interior.ColorIndex = 9
               Else
                   'Worksheets("Sheet2").Cells(RX, CX) = iCheck
               End If
           End If

 

mvh Camilla

 

ed av moderator:

Kod-taggar tack när du klistrar in kod

 

 

 

[inlägget ändrat 2009-05-25 13:08:09 av Monshi]

Länk till kommentar
Dela på andra webbplatser

En konstig detalj jag kan se är For-satsen. Vad a för variabel? Ska det inte stå j där?

 

En annan, vad gör du med myStr? Du ska inte skippa att skriva till cellerna under for-satsen och sedan skriva ut myStr till cellen när For-satsen är klar?

 

 

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

For i = 6 To 12
                   iCheck = 100
                   iCheck = CInt(Mid(Tag, i, 1))
                   If iCheck <> 100 Then
                       'Worksheets("Sheet2").Cells(RX, CX) = "I"
                       myStr = myStr & "I"
                   Else
                       'Worksheets("Sheet2").Cells(RX, CX) = "C"
                       myStr = myStr & "C"
                   End If

               Next i
               If myStr = "IICCIII" Then
                   Worksheets("Sheet2").Cells(RX, CX).Interior.ColorIndex = 9
               Else
                   Worksheets("Sheet2").Cells(RX, CX).Interior.ColorIndex = 3
               End If
           End If

           CX = CX + 1
        Loop
   Next RX
End Sub

 

Hej igen. a ett var fel, har nu andrat det till siffran 12. Men nar jag debuggar får jag fel på denna raden:

iCheck = CInt(Mid(Tag, i, 1))

Ar det någon som vet varfor???

//Camilla

 

ed av moderator

kod-taggar, pls

 

 

[inlägget ändrat 2009-06-03 15:27:37 av Monshi]

Länk till kommentar
Dela på andra webbplatser

Du stegar mellan 6 och tolv och kollar inte om strängen du stegar är så lång. Det är min gissning, att du försöker läsa tecken som ej finns.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Tack, har fixat det nu, men det var inte felet ??

 

'Teste om tagen har ok format
           Dim iCheck As Integer
           Dim myStr As String
           myStr = ""
           If Len(Tag) > 5 Then
               If Len(Tag) > 11 Then
                   For i = 6 To 12
                       iCheck = 100
                       iCheck = CInt(Mid(Tag, i, 1))
                       If iCheck <> 100 Then
                           'Worksheets("Sheet2").Cells(RX, CX) = "I"
                           myStr = myStr & "I"
                       Else
                           'Worksheets("Sheet2").Cells(RX, CX) = "C"
                           myStr = myStr & "C"
                       End If

                   Next i
                   If myStr = "IICCIII" Then
                       Worksheets("Sheet2").Cells(RX, CX).Interior.ColorIndex = 9
                   Else
                       Worksheets("Sheet2").Cells(RX, CX).Interior.ColorIndex = 3
                   End If
               Else
                   Worksheets("Sheet2").Cells(RX, CX).Interior.ColorIndex = 3
               End If
           End If

           CX = CX + 1
        Loop
   Next RX
End Sub

 

får fortfarande

"Run-time error '13':"

Type mismatch

på iCheck = CInt(Mid(Tag, i, 1))????

 

Ed av moderator

Du har inte iaktagit att jag vill att du använder KOD-taggar

 

 

 

[inlägget ändrat 2009-06-03 19:35:55 av Monshi]

Länk till kommentar
Dela på andra webbplatser

Kod-taggar, pls...

 

Du har tappat bort raden

On Error Resume Next

 

som gör att VBA vid fel bara kör vidare.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...