Just nu i M3-nätverket
Jump to content

Loopa igenom celler i namngivet område


Shape_sthlm

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...