VBA代码正在运行但不起作用

VBA代码正在运行但不起作用,vba,excel,Vba,Excel,下面的代码用于预期目的:将某些行从一个工作表复制到另一个工作表。但是,当我添加带有rangeToDelete的部分时,这意味着在每次新运行代码之前清除我复制到的空间。我不确定发生了什么,但当我使用MsgBox验证代码的某些部分时,似乎是循环没有运行。但是,我不知道为什么,但我没有挑起一个错误 Option Explicit Sub findCells() Dim topCell As String Dim leftCell As String Dim refCell As Rang

下面的代码用于预期目的:将某些行从一个工作表复制到另一个工作表。但是,当我添加带有rangeToDelete的部分时,这意味着在每次新运行代码之前清除我复制到的空间。我不确定发生了什么,但当我使用MsgBox验证代码的某些部分时,似乎是循环没有运行。但是,我不知道为什么,但我没有挑起一个错误

Option Explicit

Sub findCells()
  Dim topCell As String
  Dim leftCell As String
  Dim refCell As Range
  Dim sht As Worksheet
  Dim lastRow As Long
  Dim i As Long
  Dim cellVal As String
  Dim altCounter As Long
  Dim crange As Range
  Dim rangeToDelete As Range

  Set rangeToDelete = Worksheets("Summary").Cells(31, "A").CurrentRegion
  rangeToDelete.Value = ""

  Set refCell = ActiveCell
  topCell = refCell.End(xlUp).Value
  leftCell = refCell.End(xlToLeft).Value

  Set sht = Worksheets(topCell)
  lastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
  With sht
    .Range("A1:G1").Copy Worksheets("Summary").Range("A31:G31")
    altCounter = 31
    For i = 1 To lastRow
      cellVal = Cells(i, 5).Value
      If leftCell = cellVal Then
        altCounter = altCounter + 1
        Set crange = .Range("A" & i & ":" & "G" & i)
        crange.Copy Worksheets("Summary").Range("A" & altCounter & ":" & "G" & altCounter)
      End If
    Next i
  End With

End Sub

range.cells used数字而非文本代码中的A列使用1。并按建议使用清除内容方法。

循环条目上lastrow的值是多少?不要使用.value=“”,而是使用.ClearContents。您正在用空字符串填充这些单元格,而不是清除它们。或者简单地说:
rangeToDelete.Clear
尝试在此处添加点是否有帮助
cellVal=.cells(i,5).Value
。我做了所有建议的更改。是@SJR的建议最终解决了这个问题。
.Cells
接受字母列引用和数字列引用,所以
。Cells(1,1)
。Cells(1,A”)
都是正确的。