Start » Excelmakron | Effektivisera och Automatisera med Makron » Makroexempel i Excel » SpecialCells – Varianter på Klistra Värde i Excel VBA

SpecialCells – Varianter på Klistra Värde i Excel VBA





go-to-specialI det dagliga Excelarbetet vill man ofta göra om cellers formler till värden. Förutom den mest rättframma metoden PasteSpecial Paste:=xlValues så finns det ett annat sätt att utföra konverteringen på. Excel erbjuder en objektklass som heter SpecialCells och som vi faktiskt kan dra mycket nytta inte bara i det här sammanhanget.

SpecialCells – en användbar objektklass i Excel

SpecialCells-klassen når du via menyn Edit – Go To. Ett litet dialogfönster öppnas som inte medger mer än inmatning av en cellreferens. Men om vi trycker på knappen “Special” så öppnas ett riktigt intressant fönster, nämligen SpecialCells.

För att kort beskriva den här funktionen så räcker det med att kryssa i t ex “Empty cells” och trycka Ok. Excel kommer då att markera alla tomma celler på hela kalkylbladet eller inom det markerade området under förutsätning att flera celler är markerade.

Om vi istället anger “Cells with formulas” så kommer samtliga celler innehållande formler att markeras. Det är den här varianten av SpecialCells som vi drar nytta av i det här VBA-tipset.

VBA-kod för att konvertera SpecialCells till konstanter

SpecialCells-funktionerna kan du alltså använda dig av direkt från kalkylbladet. Men du kan givetvis också komma åt funktionera via VBA. Nedan följer ett par exempel på applicering av SpecialCells i Excel för att konvertera till värden.

1. Göra om samtliga kalkylbladets formler till värden

Sub FormlerSheetTillKonstanter()
 With ActiveSheet.UsedRange.SpecialCells(xlFormulas)
  .Value = .Value
 End With
End Sub

2. Konvertera markerade cellers formler till värden

I det här exemplet utgår vi från de kalkylbladsceller som för ögonblicket är markerade. Observera att även celler som redan innehåller konstanter kan ingå i det markerade området.

Sub FormlerRangeTillKonstanter()
 With Selection.SpecialCells(xlFormulas)
  .Value = .Value
 End With
End Sub

3. Göra om samtliga celler i hela Excelboken till värden

För att konvertera samtliga formler i hela Excelboken till värden så måste vi lägga till en funktion som loppar igenom samtliga i boken ingående kalkylblad.

Sub FormlerBokTillKonstanter()
 
intlExcelFlikar = ActiveWorkbook.Worksheets.Count
 
For i = 1 To intlExcelFlikar
 Worksheets(i).Activate
  With ActiveSheet.UsedRange.SpecialCells(xlFormulas)
   .Value = .Value
  End With
Next i
End Sub

Andra tillämpningar på SpecialCells

Som tidigare nämnts så är SpecialCells-objektet mycket användbar både vid direkt arbete i kalkylbladet som i makrosammanhang. I exemplen ovan har vi använt oss av xlFormulas men det finns flera andra praktiska varianter som du kan ha i bakhuvudet.

Personligen har jag vid ett flertal tillfällen funnit SpecialCells(xlCellTypeComments) väldigt värdefull då jag velat rensa stora Excelböcker från cellkommentarer med ett enkelt svep.

SpecialCells(xlCellTypeBlanks) -> Tomma celler
SpecialCells(xlCellTypeAllFormatConditions) ->Celler med villkorade format (Conditional formats)
SpecialCells(xlCellTypeComments) -> Celler med cellkommentarer





Lämna en kommentar