Avatar billede Sidsel Seniormester
18. maj 2020 - 13:15 Der er 7 kommentarer og
1 løsning

funktion Længde i vba

Hej.
Jeg skal bruge en funktion som kan tælle hvor mange karakterer der er i en celle. (i dette tilfælde skal den se om der er 11)
Formlen i excel er =Længde

I VBA har jeg skrevet
Application.WorksheetFunction = Len(rngCelle45.Offset(0, -12)) = 11

Fejlen, når jeg forsøger at køre den er run-time error "438": Object doesn't support property or method.

Kan nogen mon hjælpe med at få funktionen til at virke?
Avatar billede thomas_bk Ekspert
18. maj 2020 - 13:37 #1
https://docs.microsoft.com/en-us/office/vba/api/excel.application.worksheetfunction

Link til ms funktionsbeskrivelse.

Jeg kan ikke se ud fra dit eksempel hvad du regner på.
Men din kommando er desværre noget galt på den.
Avatar billede store-morten Ekspert
18. maj 2020 - 13:56 #2
Prøv uden: Application.WorksheetFunction =
Avatar billede Sidsel Seniormester
18. maj 2020 - 13:56 #3
Jeg prøver bare at tælle i en celle (rngCelle45.Offset(0, -12))

Jeg har nu rettet til

if Application.WorksheetFunction.Len(rngCelle45.Offset(0, -12)) = 11 Then

Det er stadig samme fejl.
Avatar billede thomas_bk Ekspert
18. maj 2020 - 14:07 #4
Som nævnt i #2, prøve uden  Application.WorksheetFunction.

Len er en egentligt VBA funktion og skal derfor ikke bruge det nævnte.

Len(rngCelle45.Offset(0, -12)) = 11
Jeg vil også mene at der mangler et ) efter 45
Avatar billede Slettet bruger
18. maj 2020 - 14:08 #5
hvorfor bruger du offset til det?
uden at vide alt for meget omkring excel, så er det kommandoen "if len(c1.value) = 11 then" (så sker der noget, hvis c1's tekst har 11 karakter)
Avatar billede thomas_bk Ekspert
18. maj 2020 - 14:09 #6
Beklager, se bort fra mangler )
Avatar billede store-morten Ekspert
18. maj 2020 - 15:36 #7
Hvordan sættes: rngCelle45 ?
Avatar billede Sidsel Seniormester
19. maj 2020 - 08:06 #8
det var Application.WorksheetFunction somvar problemet.

som total ser hele min kode således ud nu.

Dim rngCelle45 As Range
Dim rngOmråde45 As Range

  Set rngOmråde45 = Workbooks1).Worksheets("Ark1").Range("N25:N333")
 
  For Each rngCelle45 In rngOmråde45
        If rngCelle45.Value > 0 Then
            If Len(rngCelle45.Offset(0, -12)) = 11 Then
              rngCelle45.Offset(0, -12).Copy _
                  Destination:= _
Workbooks("Tom Ztilskind").Worksheets("Ark1").Range("P6500").End(xlUp).Offset(1, -4)
           
            End If
        End If
       
        Next
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

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