*编辑 这就是最终的工作方式。插入新行时,下面的解决方案不会运行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
我正在尝试读取列的最后一个单元格中的数据。 &#34; X&#34;的价值应该是最后一个单元格的值。 然后我想&#34; X&#34;要与行数进行比较,如果行数小于&#34; X&#34;,请执行我的宏&#34; AddProj&#34;。 一次&#34; X&#34;和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
&#34; AddProj&#34;是上面代码中引用的模块(谢谢@jsheeran @SJR ACyril寻求帮助):
Sub AddProj()
Sheet1.Range("Master").Copy Sheet1.Range("C" & Rows.Count).End(xlUp).Offset(1)
End Sub
提前致谢。
答案 0 :(得分:0)
试试这个:
while
X是一个变量,但您将其称为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"
,因为它没有必要,即使在这种情况下也什么也不做,因为首先.Select
不能返回值,第二Sub
也没有返回值。计算最后一行的最佳方法是:.Select
答案 1 :(得分:0)
这只是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