2013-05-19 66 views
1

我試圖在活動工作表上循環選擇「Q」列,找到27到40之間的值,然後將該單元格與指定單元格周圍的區域一起復制由(-1,-16)轉換爲新的表格。VBA從表單到表單的循環和複製區域

現在我只是使區域加粗以確保我的循環捕捉正確的值和區域。

我「新來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 

回答

1

試試下面的代碼:

  • 務必將ScreenUpdating屬性回真當您的宏 ends.Check在代碼中使用選擇/激活此link
  • 避免檢查這個link
  • 在處理多個 工作表時,始終明確指定工作表。
  • 避免使用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 
+0

謝謝!這真的有幫助。我將稍微修改一下,然後發佈我的進度。 – Ptrkcon

相關問題