Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于活动单元格删除形状(旋转按钮)。偏移变量_Excel_Vba - Fatal编程技术网

Excel 基于活动单元格删除形状(旋转按钮)。偏移变量

Excel 基于活动单元格删除形状(旋转按钮)。偏移变量,excel,vba,Excel,Vba,我想删除相对于活动单元格的旋转框(A列,同一行) 我认为问题在于使用IF语句中的.Value,.Address不起作用。Value不会删除活动复选框,但会删除所有其他复选框和旋转按钮 电子表格预期用途 在A列中,有带有IF语句的复选框,当选中(true)时,将前一行中的日期+1添加到当前行B列,在D列中添加一个旋转按钮(链接到C列),在F列中添加一个旋转按钮(链接到E列)。这种编码是有效的 当复选框未选中(False)时,我有代码可以使用ActiveCell.Offset(A列单元格)清除该行中

我想删除相对于活动单元格的旋转框(A列,同一行)

我认为问题在于使用IF语句中的.Value,.Address不起作用。Value不会删除活动复选框,但会删除所有其他复选框和旋转按钮

电子表格预期用途

在A列中,有带有IF语句的复选框,当选中(true)时,将前一行中的日期+1添加到当前行B列,在D列中添加一个旋转按钮(链接到C列),在F列中添加一个旋转按钮(链接到E列)。这种编码是有效的

当复选框未选中(False)时,我有代码可以使用ActiveCell.Offset(A列单元格)清除该行中单元格的内容,我想删除旋转按钮,这样它们就不会被意外地用于向清除的单元格添加值

另一个提交按钮将简单地复制用户输入的数据并粘贴到另一张表中进行分析。此按钮还将重置工作表

下面的代码只是试图删除一个旋转按钮,我将复制、粘贴和更新第二个旋转按钮的偏移量。带有红色箭头的旋转按钮应该是唯一被删除的按钮

在下面的帖子中找到了原始代码。我试图调整它以使用一个变量


找到了解决办法。只需复制、粘贴块并以不同方式偏移更多形状即可

有点了解它是如何工作的。正如@DecimalTurn对单元格隐式值的建议,它现在返回一个False,这就是它工作的原因。我想使用intersect参数也会使它更可靠

改编自布基米斯的第二篇文章

Sub RemoveSpinButtons()

 Dim Shape As Shape

 For Each Shape In wsSpinButtons.Shapes
        If Not Intersect(Shape.TopLeftCell, ActiveCell.Offset(0, 3)) Is Nothing Then
            Shape.Delete
            Exit For
        End If
 Next Shape
End Sub

选项的值是多少?我不建议使用
activecell
,因为它可能不是您所认为的那样。@SJR逐步遍历代码,直到存储变量。局部变量窗口:
OptionOneSpin
,键入
Range/Range
,进一步扩展到
验证
表达式,
=
类型
布尔
的值是正确的,它们被存储为
Long
。我希望这就是答案,如果我找错了地方,请告诉我。我认为您的一些问题来自这样一个事实:Excel中的空单元格在求值时有一个隐式值0,这可能就是为什么您的if语句条件每次求值都为TRUE。
Sub RemoveSpinButtons()

 Dim Shape As Shape

 For Each Shape In wsSpinButtons.Shapes
        If Not Intersect(Shape.TopLeftCell, ActiveCell.Offset(0, 3)) Is Nothing Then
            Shape.Delete
            Exit For
        End If
 Next Shape
End Sub