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