Tämän artikkelin esimerkit tiedostossa specialcells.xlsm
Range.SpecialCells
Range.SpecialCells-menetelmä vastaa Excelin Home (Aloitus) -välilehden Find – Go To Special (Etsi – Siirry määräten) -toimintoa. Jollei toiminto ole tuttu, niin kannattaa tutustua. Toiminnon käyttöä VBA:n puolella voit opetella nauhoittamalla toiminnon ensin Excelin puolella.
Tyhjien solujen korvaaminen
Seuraava ohjelma korvaa aktiivisen solun ympärillä olevan aineiston tyhjät solut x:llä.
Sub ReplaceEmpty() On Error Resume Next ActiveCell.CurrentRegion.SpecialCells(xlCellTypeBlanks). _ Value = "x" On Error GoTo 0 End Sub
SpecialCells-menetelmän argumentilla xlCellTypeBlanks löydetään nimen omaan tyhjät solut.
On Error Resume next on tarpeen. Muutoin ohjelma pysähtyy virheeseen, jos tyhjiä soluja ei löydy.
Kaavat arvoiksi
Kaavoilla laskettujen tulosten muuttaminen pelkiksi arvoiksi onnistuu seuraavalla ohjelmalla.
Sub FormulaAsValues1() On Error Resume Next ActiveCell.CurrentRegion.SpecialCells _ (xlCellTypeFormulas).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False On Error GoTo 0 End Sub
SpecialCells-menetelmän argumentilla xlCellTypeFormulas löydetään nimen omaan tyhjät solut.
Ohjelma heikko kohta on PasteSpecial-menetelmä. Se ei toimi toivotulla tavalla, jos kaavoja sisältävät solut eivät ole vierekkäisissä ja allekkaisissa soluissa. Seuraava ohjelma on parempi, koska se toimii vaikka Select-menetelmän valitsema alue olisi monivalinta.
Sub FormulasAsValues2() Dim Cell As Range On Error Resume Next ActiveCell.CurrentRegion.SpecialCells _ (xlCellTypeFormulas).Select For Each Cell In Selection Cell.Value = Cell.Value Next Cell On Error GoTo 0 End Sub
Eri tyyppisten solujen tunnistaminen
Seuraava ohjelma värjää merkkijonotiedon, numerotiedon, kaavat ja tyhjät omilla taustaväreillään
Sub ColorCells() On Error Resume Next With ActiveCell.CurrentRegion .SpecialCells(xlCellTypeConstants, xlNumbers). _ Interior.Color = RGB(197, 217, 241) .SpecialCells(xlCellTypeConstants, xlTextValues). _ Interior.Color = RGB(242, 220, 219) .SpecialCells(xlCellTypeBlanks). _ Interior.Color = RGB(242, 242, 242) .SpecialCells(xlCellTypeFormulas). _ Interior.Color = RGB(235, 241, 222) End With On Error GoTo 0 End Sub
Argumentilla xlCellTypeConstants poimitaan solut, jotka eivät sisällä laskentakaavaa. Toisella argumentilla tarkennetaan, onko kyseessä numerotieto xlNumbers vai merkkijonotieto xlTextValues.
Lisätietoa
Lisätietoa Range.SpecialCells -menetelmän argumenteista Range.SpecialCells -menetelmän ohjetoiminnosta.
Tämän artikkelin esimerkit tiedostossa specialcells.xlsm