Hej. Jag vill ha förslag på hur man kan göra för att manipulera Excelfunktioner som =MAX(), =MEDEL() o.dyl. via VBA. För tillfället har jag löst detta problem enligt nedan, men det är inte den optimala lösningen.
Dim NewValSpan As Range
Dim OldValSpan As Range
Set NewValSpan = Sheets("Utvärdering").Range("Z4")
Set OldValSpan = Sheets("Utvärdering").Range("AB4")
If NewValSpan <> OldValSpan Then
Sheets("Värdesida1").Select
Rows("2:2").Select
Selection.Replace What:= OldValSpan, Replacement:=NewValSpan, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Range("Z4,AA4").Select
Range("AA4").Activate
Selection.Copy
Range("AB4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Förklaring: Arbetsboken består av några ”Värdesidor” och en ”Utvärderingssida”. På sidan “Utvärdering” finns Startknappen för Makrot. Bredvid den finns en ruta med celler där jag skriver in gränsvärden och parametrar för utvärderingen. En av dessa parametrar är ”NewValSpan”, som är ett heltal som visar hur många rader jag vill att ex. =MEDEL() skall baseras på. När jag skrivit in ett värde för ”NewValSpan” och klickat på Startknappen skall If-satsen utvärderas. Om den är sann skall Rad2 på ”Värdesida1” väljas ut. Därefter görs helt enkelt en vanlig Sök och Ersätt –körning på det valda området. Sist kopieras värdet för ”NewValSpan” över till ”OldValSpan” för att Makrot vid nästa körning inte skall göra ovanstående om inte ett nytt ”NewValSpan” skrivits in. För ytterligare klargöring, om funktionen i ex. cell B2 på Värdesida1 ser ut så här =MEDEL(B10:B150) skall den understrukna delen, allså 150 vara den del som byts ut mot värdet av ”NewValSpan” vid Sök och Ersätt –körningen.
Ett effektivare sätt vore om Makrot kunde skriva in värdet av ”NewValSpan” oavsett vilket värde det tidigare står på den platsen i funktionen =MEDEL(B10:B150), allså i stället för Sök och Ersätt får man enbart en Ersätt –funktion.