1

我试图在我的活动工作表上循环“Q”列,找到介于 27 和 40 之间的值,然后将该单元格连同 (-1, -16) 指出的单元格周围的区域复制到一个新的床单。

现在,我只是将区域设置为粗体,以确保我的循环捕获正确的值和区域。

我是 VBA 新手,所以如果有人能给我一些指示或建议如何解决我的问题,我将不胜感激。

Sub Test2()
Application.ScreenUpdating = False
ActiveSheet.Range("Q13").Select
Let x = 0
Do While x < 500
    If ActiveCell.Value >= 27 And ActiveCell.Value <= 40 Then
        Range(ActiveCell, ActiveCell.Offset(-1, -16)).Select
        Selection.Font.Bold = True
        ActiveCell.Offset(2, 16).Activate
    Else
        ActiveCell.Offset(1, 0).Select
    End If
    x = x + 1
Loop
End Sub
4

1 回答 1

1

试试下面的代码:

  • 当您的宏结束时,请始终将 ScreenUpdating 属性设置回 True。检查此链接
  • 避免在代码中使用 Select/Activate。检查此链接
  • 处理多个工作表时,始终明确指定工作表。
  • 避免使用 ActiveCell、ActiveSheet 并明确引用它们。
Sub Test2()

    Application.ScreenUpdating = False


    Dim lastRow As Long
    lastRow = Sheets("sheet1").Range("Q" & Rows.Count).End(xlUp).Row

    Dim rng As Range, cell As Range
    Set rng = Sheets("sheet1").Range("Q1:Q" & lastRow)

    For Each cell In rng

        If cell.Value >= 27 And cell.Value <= 40 Then
            Sheets("sheet1").Range(cell, cell.Offset(0, -16)).Copy Sheets("sheet2").Cells(Sheets("sheet2").Range("Q" & Rows.Count).End(xlUp).Row + 1, 1)
        End If
    Next

    Application.ScreenUpdating = True
End Sub
于 2013-05-20T01:09:11.300 回答