Задался вопросом: как не плодить темы, а разобраться сам. Перечитал кучу примеров и литературы - и все равно НЕ понял. К примеру есть два похожих макроса:
Range("C:C,D:D,F:F,I:I,J:J").Select Range("J1").Activate With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("B29").Select End Sub
[/vba]
Как указать каждому из них, вычислять количество строк, по столбцу , скажем А. Сейчас он видит в листе 27 строк, а если их будет больше?
Задался вопросом: как не плодить темы, а разобраться сам. Перечитал кучу примеров и литературы - и все равно НЕ понял. К примеру есть два похожих макроса:
Sub курс() Dim lr As Long lr = Cells.SpecialCells(xlCellTypeLastCell).Row Range("E2").FormulaR1C1 = "=RC[1]/R1C5" Range("E2").AutoFill Destination:=Range("E2:E" & lr) 'формулу можно еще так задать 'Range("E2:E" & lr).FormulaR1C1 = "=RC[1]/R1C5" Range("E2:E" & lr).NumberFormat = "#,##0.0_ ;[Red]-#,##0.0 " With Range("E2:E" & lr) .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With End Sub
[/vba]
например, так: [vba]
Код
Sub курс() Dim lr As Long lr = Cells.SpecialCells(xlCellTypeLastCell).Row Range("E2").FormulaR1C1 = "=RC[1]/R1C5" Range("E2").AutoFill Destination:=Range("E2:E" & lr) 'формулу можно еще так задать 'Range("E2:E" & lr).FormulaR1C1 = "=RC[1]/R1C5" Range("E2:E" & lr).NumberFormat = "#,##0.0_ ;[Red]-#,##0.0 " With Range("E2:E" & lr) .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With End Sub
Sub Макрос5() Dim lr As Long, i As Long Range("E2").Select ActiveCell.FormulaR1C1 = "=RC[1]/R[-1]C" Range("E2").Select ActiveCell.FormulaR1C1 = "=RC[1]/R1C5" Range("E2").Select lr = Cells(Rows.Count, "B").End(xlUp).Row 'Брать по колонке В и до конца заполнения Selection.AutoFill Destination:=Range("E2:E" & lr) 'Начинать с строки 2 колонки Е и идти до конца столбца Е по заполнению В Columns("E:E").Select Selection.NumberFormat = "#,##0.0_ ;[Red]-#,##0.0 " With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("E6").Select End Sub
[/vba]
Еще вопрос, а .Select - не слишком ли его много, не скажется ли это на скорости работы скрипта?
Внес такие коррективы:
[vba]
Код
Sub Макрос5() Dim lr As Long, i As Long Range("E2").Select ActiveCell.FormulaR1C1 = "=RC[1]/R[-1]C" Range("E2").Select ActiveCell.FormulaR1C1 = "=RC[1]/R1C5" Range("E2").Select lr = Cells(Rows.Count, "B").End(xlUp).Row 'Брать по колонке В и до конца заполнения Selection.AutoFill Destination:=Range("E2:E" & lr) 'Начинать с строки 2 колонки Е и идти до конца столбца Е по заполнению В Columns("E:E").Select Selection.NumberFormat = "#,##0.0_ ;[Red]-#,##0.0 " With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("E6").Select End Sub
[/vba]
Еще вопрос, а .Select - не слишком ли его много, не скажется ли это на скорости работы скрипта?wwizard