*编辑这是最终有点工作。插入新行时,下面的解决方案不会运行AddProj。
Sub Worksheet_Calculate()
Dim X As Range
Set X = LastCell 'The X is superflous, you could just use the LastCell variable
If Sheet5.Range("A" & Rows.Count).Value < X.Value Then
X.Value = Me.Range("A" & Rows.Count).Value
AddProj
End If
End Sub
第1单元包含以下内容:
Function LastCell() As Range
With Sheet5
Set LastCell = .Cells(Rows.Count, 1).End(xlUp)
End With
End Function
Sub AddProj()
Sheet1.Range("Master").Copy Sheet1.Range("C" & Rows.Count).End(xlUp).Offset(1)
End Sub
我正在尝试读取列的最后一个单元格中的数据。 “X”的值应该是最后一个单元格的值。然后我想要将“X”与行数进行比较,如果行数小于“X”,则执行我的宏“AddProj”。一旦“X”和A列是相同的值,就不会做任何其他事情。
出于某种原因,它无法正常工作。此代码位于工作表上,我希望进行比较。请参阅下面的代码:
Private Sub Worksheet_Calculate()
X = LastCell
If Sheet5.Range("A" & Rows.Count).Value < Sheet5.Range("X").Value Then
Sheet5.Range("X").Value = Me.Range("A" & Rows.Count).Value
AddProj
End If
End Sub
Sub LastCell()
Range("A1").End(xlDown).Select
End Sub
“AddProj”是上面代码中引用的模块(感谢@jsheeran @SJR ACyril寻求帮助):
Sub AddProj()
Sheet1.Range("Master").Copy Sheet1.Range("C" & Rows.Count).End(xlUp).Offset(1)
End Sub
提前致谢。
试试这个:
Sub Worksheet_Calculate()
Dim lRow As Long
lRow = Sheet5.Cells(Sheet5.Rows.Count, 1).End(xlUp).Row
If Sheet5.Cells(lRow, 1) > lRow Then
Sheet5.Cells(lRow, 1) = lRow
AddProj
End If
End Sub
X是一个变量,但你将它称为"X"
。也避免使用.Select
,因为它没有必要,即使在这种情况下什么都不做,因为首先Sub
不能返回值,第二个.Select
也没有返回值。计算最后一行的最佳方法是:Sheet5.Cells(Sheet5.Rows.Count, 1).End(xlUp).Row
这里只是UPG很大的答案。
Dim lRow As Long
lRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
If lRow >= Sheet1.Cells(lRow, 1) Then
Exit Sub
Else: AddProj
End If