mon935 Postad 30 mars, 2017 Share Postad 30 mars, 2017 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? Länk till kommentar Dela på andra webbplatser More sharing options...
Monshi Postad 1 april, 2017 Share Postad 1 april, 2017 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. Länk till kommentar Dela på andra webbplatser More sharing options...
mon935 Postad 3 april, 2017 Trådskapare Share Postad 3 april, 2017 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. Länk till kommentar Dela på andra webbplatser More sharing options...
Monshi Postad 3 april, 2017 Share Postad 3 april, 2017 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 Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.