在每个工作表中创建一个特定单元格会返回一个高于它的值并保持不变

时间:2018-01-13 05:45:25

标签: excel vba

我有一张包含多张纸的Excel。在每张表中,我想要一个特定的单元格(让它称之为BANK单元格)来显示它上面的单元格的值。但是它上面可能有多个空单元格,直到它到达实际包含数值的单元格。 每个工作表都有自己的BANK单元格,每个工作表的每个BANK单元格都应该有自己的值(在自己的工作表中)。

我写了一个VBA来实现这个目标。起初它看起来很成功。但很快我意识到,虽然我原本打算让每个工作表的BANK单元独立于每个工作表,但我的VBA脚本实际上将它们全部链接在一起。 例如,在表1中,如果BANK单元格上方的单元格具有值100,则BANK单元格自动显示100,完美。 然后我转到表2,完成我的工作,最终在表2中,BANK单元格上方的单元格值为200,而表格2中的BANK单元格也显示200,仍然是完美的。 但是如果我现在回到第1页,我会发现表1中的BANK单元已经变为200而不是预期的100。 如果我现在再次重新输入表1中的公式,是的,它将更正表1中的BANK单元格,但现在表单2不正确。

我如何"取消链接"它们,以便脚本只找到特定表格的特定值?

Function FindBalance() As Double
Application.Volatile True
Dim N As Long

For N = 1 To 13
    Dim BalanceCheck As Double
    Dim CellRow As Integer
    Dim Current_cell As Range
    Sheets(N).Activate
    Set Current_cell = Columns(3).Find("Total Money left in bank account", LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False)
    CellRow = Current_cell.Row
    BalanceCheck = 0
    While BalanceCheck = 0
        If Cells(CellRow - 1, "F").Value = "" Then
            CellRow = CellRow - 1
        Else
            BalanceCheck = Cells(CellRow - 1, "F").Value
        End If
    Wend
    FindBalance = BalanceCheck
Next N

End Function

0 个答案:

没有答案