SpecialCells
Metoden SpecialCells returnerar en eller flera celler som matchar en specificerad celltyp eller värde inom ett specificerat cellområde.Metoden kan vara mycket värdefull att använda sig av i olika sammanhang men för att kunna hantera den på ett önskat sätt måste vi förstå att
- Hittas inga celler av den önskade celltypen (xlCellType) så genereras "körfel 1004 - Hittade inga celler.".
- Om vi använder metoden på endast en cell, som specificerat cellområde, utgår Excel från hela arbetsbladet.
Följande celltyper finns att tillgå:
- xlCellTypeAllFormatConditions - För att hitta alla celler som har villkorsstyrd formatering.
- xlCellTypeAllValidation - För att hitta alla celler som har datavalidering.
- xlCellTypeBlanks - För att hitta alla tomma celler i cellområdet.
- xlCellTypeComments - För att hitta alla celler som har kommenterarer.
- xlCellTypeConstants - För att hitta alla celler med konstanta värden i sig (tal o text).
- xlCellTypeFormulas - För att hitta alla celler med formler / funktioner.
- xlCellTypeLastCell - För att hitta den sista cellen i det använda cellområdet i arbetsbladet. Dock kan den vara vansklig att använda, i synnerhet om det använda cellområdet reduceras och den sist använda cellen ej återställs mha ActiveSheet.UsedRange.
- xlCellTypeSameFormatConditions - För att hitta alla celler som har samma format som den första cellen i det angivna cellområdet.
- xlCellTypeSameValidation - För att hitta alla celler som har samma datavalidering som den första cellen i det angivna cellområdet.
- xlCellTypeVisible - För att hitta alla synliga celler.
För celltyperna xlCellTypeFormulas och xlCellTypeConstants kan ytterligare värden specificeras för mha av följande XlSpecialCellsValue:
- xlNumbers
- xlErrors
- xlLogical
- xlTextValues
I följande exempel demonstreras hur vi mha SpecialCells och celltypen xlCellTypeConstants kan kopiera endast celler med konstanter från ett blad till ett annat.
Option Explicit
Sub Kopiera_Endast_Värden()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As Workbook
Dim wsBlad1 As Worksheet, wsBlad2 As Worksheet
Dim rnKalla As Range
Set wbBok = ThisWorkbook
Set wsBlad1 = wbBok.Worksheets("Blad1")
Set wsBlad2 = wbBok.Worksheets("Blad2")
On Error GoTo Felhantering
With wsBlad1
Set rnKalla = .Range("A1:A10")
'Här omdefinieras range-variabeln till att endast omfatta
'celler med värden i.
Set rnKalla = rnKalla.SpecialCells(xlCellTypeConstants)
End With
rnKalla.Copy wsBlad2.Range("A1")
Exit Sub
Felhantering:
MsgBox "Hittade inga celler som uppfyller villkoret i det angivna cellområdet."
End Sub
I nästa exempel demonstreras xlCellTypeFormulas och xlError. Noterbart är att vi här endast identifierar celler vars funktioners/formlers resulterar i felvärden, såsom #Division/0! och #Saknas!
Sub Rakna_Endast_xlErrors()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As Workbook
Dim wsBlad1 As Worksheet
Dim rnKalla As Range
Set wbBok = ThisWorkbook
Set wsBlad1 = wbBok.Worksheets("Blad1")
With wsBlad1
Set rnKalla = .Range("A1:A10")
'Här omdefinieras range-variabeln till att endast omfatta
'celler vars funktioners / formlers resulterar i felmeddelanden.
Set rnKalla = rnKalla.SpecialCells(xlCellTypeFormulas, xlErrors)
End With
MsgBox rnKalla.Cells.Count
End Sub