在vba中从第五个循环到最终的工作表?

我有35至40个工作表与每日股票数据,我正在尝试计算macros中的每个工作表的股票收益率。 公式是:LN(Today / Yesterday)给出了每日股票收益。 我正在运行下面的代码,但我不知道如何在第5工作表中启动循环。 我的投资组合在前四个工作表中。 任何人都知道这将如何工作?

Sub Macro2() Dim wb As Workbook Dim i As Integer Dim ws As Worksheet Set wb = ActiveWorkbook Set ws = Worksheets.Count = 5 For i = 5 To ThisWorkbook.Worksheets.Count Activeworksheet.Columns("c").ClearContents Range("C4").Select ActiveCell.FormulaR1C1 = "=LN(RC[-1]/R[-1]C[-1])" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C507") Range("C4:C507").Select Next i End Sub 

你应该避免使用。select,因为这是我相信的贡献。 这应该有所帮助:

 Sub Macro2() Dim wb As Workbook Dim i As Integer Dim ws As Worksheet Set wb = ActiveWorkbook Set ws = Worksheets.Count = 5 For i = 5 To ThisWorkbook.Worksheets.Count With Worksheets(i) .Columns("c").ClearContents .Range("C4").FormulaR1C1 = "=LN(RC[-1]/R[-1]C[-1])" .Range("C4").AutoFill Destination:=.Range("C4:C507") Next i End Sub 

注意你有什么正确的想法,以i = 5开头的For循环是好的,但是你从来没有真正使用过 i 。 当你使用ActiveSheet ,它显然是使用当前活动表单的。 因此,你的代码只能运行在那张纸上……而且无论多less次你都有工作表(如果有意义的话)。

找出了家伙。 Heres根据B3:B中的价格进行编码,并在C4:C中返回

 Sub Macro2() Dim wb As Workbook Dim i As Integer Dim ws As Long Set wb = ActiveWorkbook For i = 6 To 56 ws = Worksheets(i).Activate Range("C4").Select ActiveCell.FormulaR1C1 = "=LN(RC[-1]/R[-1]C[-1])" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C507") Range("C4:C507").Select Range("C2").Select ActiveCell.FormulaR1C1 = "Daily Return" Range("C:C").Select Columns("C:C").EntireColumn.AutoFit Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Style = "Percent" Selection.NumberFormat = "0.0%" Selection.NumberFormat = "0.00%" With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("B:B").Select Range(Selection, Selection.End(xlDown)).Select Selection.Style = "Currency" Next i End Sub