Avatar billede sbmoller Nybegynder
19. november 2008 - 23:33 Der er 9 kommentarer og
1 løsning

Type mismatch hjæælp

Hej Eksperter,

Jeg har fundet et spørgsmål herinde: http://www.eksperten.dk/spm/850831

Hvor der bliver foreslået en vb kode der ser således ud:
Public Sub Slet()

    Dim RW As Long, I As Long
    RW = Range("A65536").End(xlUp).Row
    For I = RW To 1 Step -1

        If Cells(I, 1).Value = "Side" Then
            Cells(I, 1).EntireRow.Delete
        End If

        If Cells(I, 1).Value = "34BC" Then
            Cells(I, 1).EntireRow.Delete
        End If

        If Cells(I, 1).Value = "Valuta" Then
            Cells(I, 1).EntireRow.Delete
        End If

        If Cells(I, 1).Value = "Konto" Then
            Cells(I, 1).EntireRow.Delete
        End If

        If Left(Cells(I, 1).Value, 7) = "-------" Then
            Cells(I, 1).EntireRow.Delete
        End If

        If Len(Cells(I, 1).Value) = 5 Then
            Cells(I, 1).Offset(1).EntireRow.Insert
        End If

    Next
End Sub

Det er præcis sådan en jeg skal bruge. Jeg har forsøgt at indsætte den og indsætte adskillige andre koder der har samme formål men hver gang jeg forsøger at køre makroen kommer den op med en "type mismatch" fejl og markere flg. linje:       
If Cells(I, 1).Value = "Side" Then
med gul. Og det gør det ved samtlige andre kodetype der har samme formål

Hvad hulen gør jeg forkert her??

pft.
Avatar billede mugs Novice
20. november 2008 - 06:17 #1
Nu er Exce ikke lige min stærkeste side. Men i Access kommer denne fehjl typisk, når du prøver at sammenligne alfanimeriske data med numeriske.

Du definerer 2 variabler (RW og I) som Long altså numeriske data. Længere nede i koden bruger du alfanumeriske data som f.eks. If Cells(I, 1).Value = "Side" Then. Prøv at ændre RW og I til String.

Blot et skud i tågen.
Avatar billede jkrons Professor
20. november 2008 - 08:02 #2
Jeg har testet koden på adskillige datavarianter, og den kører uden problemer. Men ellers er det korrekt, hvad mugs skriver, at det handler om konflikt mellem datatyper. Jeg kan dog ikke lige se, hvad årsagen skulle være i dit tilfælde.

Sker det i alle regneark, eller kun i nogle bestemte?
Avatar billede kabbak Professor
20. november 2008 - 12:31 #3
prøv at fjerne .Value, når det er tekst

If Cells(I, 1).Value = "Side" Then

laves om til

If Cells(I, 1) = "Side" Then
Avatar billede sbmoller Nybegynder
23. november 2008 - 22:30 #4
hey igen,

Jeg har forsøgt jeres forskellige forslag men ingen af dem ser ud til at ændre noget som helst. Jeg ved ikke om jeg kan have lavet en dum instilling i excel/vb der giver fejl eller hvad hulen det er... Har i andre forslag??
Avatar billede kabbak Professor
23. november 2008 - 23:32 #5
Prøv at holde musen over I og RW, når du får fejlen, det viser værdien af dem, når koden er markeret med gult.
Det kunne være interessant at vide
Avatar billede jkrons Professor
24. november 2008 - 18:50 #6
Har du flettede celler i dit område. Flettede celler gicer ofte Type mismatch, fordi fx  Cells(3, 1).Value faktisk ikke eksisterer. Flettede celler opleves af VBA som et range.
Avatar billede sbmoller Nybegynder
24. november 2008 - 22:08 #7
#jkrons: Nej, jeg har ingen flettede celler desværre.

#kabbak: Jeg har holdt musen over de to som du nævner: I for værdien 760 og RW for værdien 1495

Hjælper det dig ??
Avatar billede jkrons Professor
24. november 2008 - 22:36 #8
Nu har jeg prøvet med yderligere et antal datavarianter, og jeg kan simpelthen ikke få din kode til at fejle. Har du mulighed for at sende dit regneark?
Avatar billede kabbak Professor
24. november 2008 - 23:20 #9
Har du flettede celler i række 760, A kolonnen
Avatar billede sbmoller Nybegynder
30. januar 2009 - 09:35 #10
...
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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