Lähetetty: 03 Elo 2006, 21:15
Ymmärsin yskän. Testatkaa toimiiko tämä paremmin:
Sub TIIRAN_HAVIKSET_TYHJIENSOLUJENTAYTTO()
'Lauri Nikkinen 20.7.2006
'Makro olettaa, että täytettävät solut alkavat laji-muuttujasta, joka on saraakkeessa B
Range("B1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="<>"
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "."
Selection.AutoFilter Field:=2
Do
'Hakee B1-sarakkeesta ensimmäisen solun, joka on ennen tyhjää solua
Range("B1").End(xlDown).Select
'Valitsee täytettävän solualueen
Set LeftCell = Cells(ActiveCell.Row, 2)
Set RightCell = Cells(ActiveCell.Row, 256)
If IsEmpty(LeftCell) Then Set LeftCell = LeftCell.End(xlToRight)
If IsEmpty(RightCell) Then Set RightCell = RightCell.End(xlToLeft)
If LeftCell.Column = 256 And RightCell.Column = 2 Then ActiveCell.Select Else Range(LeftCell, RightCell).Select
Range(Selection, Selection.End(xlDown)).Select
'Solualueen täyttö
'Tämän kohdan koodaajat alla
'Tom Ogilvy, 1999/12/14 programming
'Revised David McRitchie, 2000-11-25 programming
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim cell As Range
For Each cell In Intersect(Selection, _
ActiveSheet.UsedRange)
If Trim(cell) = "" And cell.Row > 1 Then
cell.NumberFormat = cell.Offset(-1, 0).NumberFormat
cell.Value = cell.Offset(-1, 0).Value
End If
Next cell
Application.Calculation = xlAutomatic 'xlCalculationAutomatic
Application.ScreenUpdating = False
'Looppi kunnes tulee tyhjä solu A-sarakkeessa
Loop Until IsEmpty(ActiveCell.Offset(1, 0))
Cells.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
t. Lauri Nikkinen
Sub TIIRAN_HAVIKSET_TYHJIENSOLUJENTAYTTO()
'Lauri Nikkinen 20.7.2006
'Makro olettaa, että täytettävät solut alkavat laji-muuttujasta, joka on saraakkeessa B
Range("B1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="<>"
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "."
Selection.AutoFilter Field:=2
Do
'Hakee B1-sarakkeesta ensimmäisen solun, joka on ennen tyhjää solua
Range("B1").End(xlDown).Select
'Valitsee täytettävän solualueen
Set LeftCell = Cells(ActiveCell.Row, 2)
Set RightCell = Cells(ActiveCell.Row, 256)
If IsEmpty(LeftCell) Then Set LeftCell = LeftCell.End(xlToRight)
If IsEmpty(RightCell) Then Set RightCell = RightCell.End(xlToLeft)
If LeftCell.Column = 256 And RightCell.Column = 2 Then ActiveCell.Select Else Range(LeftCell, RightCell).Select
Range(Selection, Selection.End(xlDown)).Select
'Solualueen täyttö
'Tämän kohdan koodaajat alla
'Tom Ogilvy, 1999/12/14 programming
'Revised David McRitchie, 2000-11-25 programming
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim cell As Range
For Each cell In Intersect(Selection, _
ActiveSheet.UsedRange)
If Trim(cell) = "" And cell.Row > 1 Then
cell.NumberFormat = cell.Offset(-1, 0).NumberFormat
cell.Value = cell.Offset(-1, 0).Value
End If
Next cell
Application.Calculation = xlAutomatic 'xlCalculationAutomatic
Application.ScreenUpdating = False
'Looppi kunnes tulee tyhjä solu A-sarakkeessa
Loop Until IsEmpty(ActiveCell.Offset(1, 0))
Cells.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
t. Lauri Nikkinen