我编写了一个非常简单的代码,使用按钮将一堆单元格向左或向右移动一个块。问题是我不希望用户能够在同一方向上移动单元格两次。为此,我需要向单元格添加一个隐藏属性,可用于检查它是否已从其初始位置移动,并在文件关闭并重新打开时保存此信息。
这样,在移动之前,为了向左边的单元格示例,我可以检查此属性并查看它是否已经在之前移动过一次,在这种情况下显示错误消息。
如果我可以将此属性设置为等于-1,0或+1,这取决于它是向左移动,居中移动还是向右移动。我知道我可以使用comment属性,但我更喜欢使用隐藏属性。
有干净的方法吗?任何建议都将不胜感激。
答案 0 :(得分:1)
一种方法是使用定义的命名约定在工作表上创建隐藏的Name
来存储移动状态值。
逻辑流程将是:
示例代码片段:
Sub SetHiddenName(r As Range, v As Long)
Dim nm As Name
On Error Resume Next
Set nm = r.Worksheet.Names("__" & r.Address(0, 0))
On Error GoTo 0
If nm Is Nothing Then
Set nm = r.Worksheet.Names.Add(Name:="__" & r.Address(0, 0), _
RefersTo:=v, _
Visible:=False)
Else
nm.RefersTo = v
End If
End Sub
Function GetValueOfName(r As Range) As Variant
Dim nm As Name
On Error Resume Next
Set nm = r.Worksheet.Names("__" & r.Address(0, 0))
On Error GoTo 0
If nm Is Nothing Then
' Return required value for not previously set range
GetValueOfName = ""
else
GetValueOfName = nm.RefersTo
End If
End Function
答案 1 :(得分:0)
我正在寻找一个可用的(最好是未使用的)单元格属性,可以在其中存储该单元格的值,然后在以后引用它。 “ ID”属性似乎很理想。它是一个String变量,仅在将工作簿保存到网页并希望使用HTML引用此单元格时才使用。否则,将不会使用此属性。
这是该属性说明的链接: https://docs.microsoft.com/en-us/office/vba/api/excel.range.id
例如,以下代码在ID属性中设置一个值: ActiveCell.ID =“ 123456789”