在最后一个单元格中查找值并将数据与运行宏进行比较

问题描述 投票:-1回答:2

*编辑这是最终有点工作。插入新行时,下面的解决方案不会运行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

提前致谢。

excel-vba vba excel
2个回答
0
投票

试试这个:

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


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 
© www.soinside.com 2019 - 2024. All rights reserved.