以下是代码:
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
答案 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