Avatar billede hoell Nybegynder
07. november 2008 - 13:27 Der er 4 kommentarer og
1 løsning

Slette række med bogstaver i 1'ste eller 3'de karakter

Bøvlerlidt med at få VBA til at finde de rækker hvor celle i kolonne A enten starter med et bogstav eller 3'de karakterer et bogstav.

Mit bproblem består i at alle cellerne inderholder et -, der kan være forskellige steder.

Dvs alle celler defineres som tekststrenge og derfor bøver jeg med at IsNumber altid returnerer False og Istext True.

Nogen der kender en smart smutvej uden om dette problem.

Har prøvet med isText(Mid(Range("A238"),1,1)). Men det virker ikke!!
Avatar billede jkrons Professor
07. november 2008 - 14:25 #1
Prøv at undersøge et tegn ad gangen

For i = 1 To Len(range("A238").Value)
    a = Mid(c.Value, i, 1)
    If IsNumeric(a) And (i = 1 Or i = 3) Then
        -- DIN KODE HER --
    End If
Next i

Hvis den skal være mere generel så

For Each c In Range("A1:A1000").Cells
    For i = 1 To Len(c.Value)
        a = Mid(c.Value, i, 1)
            If IsNumeric(a) And (i = 1 Or i = 3) Then
            - - Din kodeher --
            End If
    Next i
Next c

Ret selv området i den sidste så det passer.
Avatar billede jkrons Professor
07. november 2008 - 14:26 #2
Den første kode er forkert. Her er den rigtige:

For i = 1 To Len(range("A238").Value)
    a = Mid(range("A238").Value, i, 1)
    If IsNumeric(a) And (i = 1 Or i = 3) Then
        -- DIN KODE HER --
    End If
Next i
Avatar billede hoell Nybegynder
07. november 2008 - 14:54 #3
Hej Jkrons

Problemet er lidt jeg gerne vil have den strikket ind sammen med en masse andre betingelser
Jeg har denne snas code som løser alt på nær det du har lavet oven for, kan de tpå en smart måde strtikkes ind her, så jeg undgår at løbe de titsundvis af rækker igennem flere gange?

With Range("Ark1!A2:J" & Lastrow)
    rCount = .Rows.Count
    For r = rCount To 1 Step -1
        VareNr = .Cells(r, 1)
        If Mid(VareNr, 3, 1) = "0" Or Mid(VareNr, 1, 2) = "7-" Or Mid(VareNr, 1, 2) = "8-" _
                    Or Mid(VareNr, 1, 4) = "8938" Or Mid(VareNr, 1, 4) = "8939" Then
            .Rows(r).EntireRow.Delete
        End If
    Next r
End With

Mvh Carsten
Avatar billede hoell Nybegynder
07. november 2008 - 17:06 #4
Har løst det, smid et svar så er der point!
Avatar billede jkrons Professor
07. november 2008 - 22:39 #5
Et svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester