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

Varför ändras cellen jag hämtat info ifrån?

Rekommendera Poster

Hejsan!

Jag har lite kod som inte riktigt funkar som jag vill. När jag kommer till den sista raden kod där jag försöker ändra värde på variabeln FdVardeCell genom att minska den med markvarde händer något konstigt. Det blir en korrekt förändring på variabelvärdet men cellen som jag hämtade in det ursprungliga värdet till FdVardeCell ändras OCKSÅ. Det var inte planen. Varför händer detta? 

Kan jag gå runt problemet på något vis?

 

(Jag har en stor grund-exceltabell som jag gör omräkningar utfirån till en annan tabell. Varje rad i grundtabellen ska bli till tolv nya rader. När en rad beräknas om har den en "flagga" benämnd "4".  Grundtabellens värden får inte ändras så detta är en smärre katastrof.)

------------------------------------------------------------------------------------------------------------------

Dim searchRange As Range
Dim FdGrundCell As Range
Dim markvarde As Range
Dim FdVardeUtmark As Range
 
 Set searchRange = Range("a10", Range("a10").End(xlDown))
 
 Set markvarde = ActiveCell.Offset(0, -16)
           
 Set FdVardeCell = searchRange.Find(What:="4", LookIn:=xlFormulas, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        True, SearchFormat:=False).Offset(0, 35)
 
 

FdVardeCell = FdVardeCell - markvarde

-----------------------------------------------------------------------------------------------------------------

Någon som   kan hjälpa mig?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ja du jag vet inte riktigt varför. Enda jag har att invända mot är hur du hittar markvarde? Activecell är ett osäkert verktyg.

 

Men du kan  alltid skriva om till:

markvarde = ActiveCell.Offset(0, -16).Value

för att bryta referensen du har där.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ja du jag vet inte riktigt varför. Enda jag har att invända mot är hur du hittar markvarde? Activecell är ett osäkert verktyg.

 

Men du kan  alltid skriva om till:

markvarde = ActiveCell.Offset(0, -16).Value

för att bryta referensen du har där.

Tack för ditt svar. 

 

Jag förstår dock inte riktigt skillnaden i ditt sätt att skriva och mitt sätt. Du använder ju också ActiveCell.??

 

Ja testade att skriva enligt ditt förslag och då får jag "Körfel nr '91':   Objektvariabel eller With-blockvariabel har inte angetts."

Vad betyder det?

Vad jag förstått så måste jag använda mig av set-komandot när jag har en objektvariabel och det blir det när jag deklarerar den som "as range". Eller har jag fel?

 

ELLER....

....menar du att jag ska byta ut markvarde  mot AcktiveCell.Offset(0, -16).Value   i själva beräkningsformeln? Det kanske funkar men jag behöver variabeln i andra beräkningar så den måste definieras.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Du får förstår deklarera om markvarde till en annan variabeltyp för att det ska fungera, miss av mig:

Dim markVarde as Variant

markVarde = range("a1").value.

 

Du gör annars rätt med activecell, så fort som möjligt låsa värdet i en variabel.

faran med Activecell är att du vet egentligen inte vad för cell koden arbetar med. Bättre att peka upp cell mer exakt, om behov med en dialog.

 Dim rnSource As Range
    On Error Resume Next
    Set rnSource = Application.InputBox("En cell tack", "referens", Type:=8)
    On Error GoTo 0
    If rnSource Is Nothing Then Exit Sub

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...