如何在最后一行值中创建静态值?

时间:2014-10-14 00:49:52

标签: vba excel-vba excel

以下是代码:

Public n as Long ' <--above sub procedure

 With Sheets("Sheet1").Range("A6").Offset(n, 0)
    If n = 0 Then
        .Value =  1
    Else
        .Value =  .Parent.Range(.Address).Offset(-1, 0) + 1
    End If
    n = n + 1
End With

(参见下图)如果我删除4然后再次单击命令按钮它只是重置为1.我想使它静止,所以即使我删除了行的最后一个值,它仍然从最后一个值继续增加。

Store number
1
2
3
4

2 个答案:

答案 0 :(得分:0)

你要求的是,一个带内存的按钮听起来听起来并不像VBA那样整齐。 您可能在隐藏工作表上有一个列表,每次按下commandButton时都会为其添加一个值,并将列表值的最大值写回目标单元格?

或者,您可以使用开发人员标签的表单控件部分中的滚动条来调查,其中包含指向目标单元格的链接。我经常将这种技术用于交互式表格。

命名范围方法

Public sub btnPress
    dim val as long

    val = Range("PreviousCellValue")
    set Range("PreviousCellValue") = val+1

    Sheets("Sheet1").Range("A6").Offset(n, 0).value = Range("PreviousCellValue")
End sub btnPress

答案 1 :(得分:0)

试试这个:

Sub Test()
    Dim trow As Long
    With Sheets("Sheet1") '~~> change to suit
        trow = .Range("A:A").Find(vbNullString, [A5]).Row
        With .Range("A" & trow)
            If trow = 6 Then .Value = 1 _
            Else .Value = .Offset(-1, 0).Value + 1
        End With
    End With
End Sub

上面的代码找到第一个空白单元格。如果是 A6 ,则指定值为1 否则它会分配先前的单元格值加1.这是你正在尝试的吗?

编辑1:说明

trow = .Range("A:A").Find(vbNullString, [A5]).Row

这会在 A列中找到第一个空行 [A5]用于返回Range("A5")个对象。所以它也可以写成:

trow = .Range("A:A").Find(vbNullString, .Range("A5")).Row

我们在范围对象查找方法中使用VBA vbNullString常量作为 What 参数。
查找方法返回范围对象,因此上面也可以这样写:

Sub Test()
    Dim r As Range
    With Sheets("Sheet1") '~~> change to suit
        Set r = .Range("A:A").Find(vbNullString, [A5])
        With r
            If .Row = 6 Then .Value = 1 _
            Else .Value = .Offset(-1, 0).Value + 1
        End With
    End With
End Sub