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

Loopa igenom celler i namngivet område


Shape_sthlm

Rekommendera Poster

Shape_sthlm

Jag har ett område på en flik i kolumn E. Området kan variera utifrån hur många poster där finns, därför har jag namngivet det och kollar det "Koppling"

 

=FÖRSKJUTNING(SALDO!$E$2;0;0;ANTALV(SALDO!$E:$E)-1;1)

 

I varje cell hämtas ett värde upp (VTSÖK). Om VTSÖK returnerar ett fel så visas strängen "ej kopplad".

 

Med koden nedan vill jag se ifall det finns några fel, men jag kommer inte förbi första raden kod.

 

 

Set myRange = ThisWorkbook.Names("Koppling").RefersTo

Får runtime error 424 (Objekt krävs)

 

Set myRange = ThisWorkbook.Names("Koppling").RefersToRange

får runtime error 1004 (Program eller objektidentifierat fel)

 

Hoppas ni kan hjälpa mig komma vidare i detta. Thanks!!! /M

Private Sub cmdCheckError_Click()

Dim ErrorFlag As Boolean, myRange As Range, c As Range

' 1. Kontrollera ifall det finns fel i kopplingar eller om koppling saknas.
Set myRange = ThisWorkbook.Names("Koppling").RefersTo
For Each c In myRange.Cells
   If c.Value = "ej kopplad" Then ErrorFlag = True
Next c

Länk till kommentar
Dela på andra webbplatser

Du får skriva:

  	Set myRn = Range("koppling")

 

 

visserligen fungerar det även med

Set myRn = Range(ThisWorkbook.Name("Koppling").RefersTo) 

men det är att gå över ån för vatten så att säga.

Länk till kommentar
Dela på andra webbplatser

Shape_sthlm

Tyvärr, får fel 1004 igen.

 

Nu står det Metoden 'Range' i objektet' _Worksheet' misslyckades.

 

Fortfarande samma rad som spökar.

Länk till kommentar
Dela på andra webbplatser

Kanske att du måste ange vilket blad referensen är på?

 

Typ

set myRn = Blad1.Range("koppling")

 

Om du undersöker namnet med

Debug.Print ThisWorkbook.Names("koppling").RefersTo

vad får du då fram för text i direktfönstret?

Länk till kommentar
Dela på andra webbplatser

Shape_sthlm

Om du undersöker namnet med

Debug.Print ThisWorkbook.Names("koppling").RefersTo

vad får du då fram för text i direktfönstret?

 

 

=OFFSET(SALDO!$E$2,0,0,COUNTA(SALDO!$E:$E)-1,1)

Länk till kommentar
Dela på andra webbplatser

Shape_sthlm

LÖST:

 

med följande omskrivning så fungerar det fint.

 

Set mySheet = Worksheets("SALDO")
With mySheet
Set myRange = .Range("Koppling")
   For Each c In myRange.Cells
       If c.Value = "ej kopplad" Then ErrorFlag = True
   Next c
End With

 

Känns bara onödigt eftersom vitsen med ett namn är att det är ett specifikt område i arbetsboken. Dvs samma namn kan väl inte finnas på olika arbetsblad?!

 

 

/M

Länk till kommentar
Dela på andra webbplatser

Om koden står på ett arbetsblads kodblad och namnet refererar till celler på annat blad, då måste du ange vilket blad namnet här hemma på. Detta eftersom det implicit står Me.Range("koppling") när du skriver Range("koppling") där.

 

Om koden står i en modul är det mjukare, då kan du använda namnet utan ange blad.

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...