隐藏行会破坏这些行上的 activeX 选项 buttons.located

Hidding rows breaks activeX option buttons.located on those rows

我已经搜索了互联网,但似乎找不到其他人遇到同样的问题。

我有一个包含多个分组 ActiveX 选项框的电子表格。用户要从框中查看电子表格和 select 选项(通常是 否)。该代码只是隐藏了用户不应该根据他们之前的选择回答的行。 示例代码:

 Private Sub OptionButton3_Click()
 'High School Diploma YES Option

     Application.ScreenUpdating = False
     Sheets("Sheet1").Rows("18:38").Hidden = True
     Application.ScreenUpdating = True

 End Sub

 Private Sub OptionButton4_Click()
 'High School Diploma NO Option

     Application.ScreenUpdating = False
     Sheets("Sheet1").Rows("18:38").Hidden = False
     Application.ScreenUpdating = True
 End Sub

我的问题是,每当我取消隐藏这些行之一(例如,用户将 "Yes" 更改为 "No")时,以前隐藏的 activeX 选项框现在无法点击,随后无法使用。任何人都知道是什么原因造成的以及如何解决它?

我什至尝试在隐藏行之前单独隐藏控制框,但我得到了相同的结果

(ActiveSheet.Shapes.Range(Array("Group 1", "Group 2", "Group 3")).Visible = False)

刚接触控件,所以不确定我是否犯了一个明显的错误。非常感谢任何帮助。

我试过这个:

我在工作表 1 的第 1 行有两个选项按钮。下面的代码来自 sheet1 的模块。

我使用程序 HideOrShowRow 来隐藏或显示该行。

两个选项按钮的右键单击>格式控制>属性>对象定位属性设置为"Move and size with cells"。
这就是允许控件与行一起隐藏的原因 - 所以我认为您一定已经这样做了。

无论如何,它对我来说效果很好。但是,我怀疑每个问题都有两个选项按钮。是和否。这些需要像我下​​面的代码那样相互切换值。

请注意,一旦选项按钮中包含 "tick",您将无法通过单击它来取消选中。另一个选项按钮必须这样做! (即下面我的代码)

您的代码中没有这个可能与您的问题有关。

此外,每个 ADo 控件都启用了 属性。如果将其设置为 false,用户将无法更改其值或 select 控件。听起来他们可能已经变得虚假了?但是怎么办!

Private Sub Q1_no_Click()

    MsgBox "hi"
    Me.Q1_No.Value = Not Me.Q1_yes.Value

End Sub


Private Sub Q1_yes_Click()

    Me.Q1_yes.Value = Not Me.Q1_No.Value

End Sub


Sub HideOrShowRow()

    Me.Range("A1").EntireRow.Hidden = Not Me.Range("A1").EntireRow.Hidden

End Sub

所以,我已经玩了几天,这是我学到的:

如果 activeX 按钮(选项按钮、复选框等)设置为 "Move and Size with cells",只要它所在的单元格被隐藏,它就会被破坏。该按钮无法再被点击(或右键点击),并且无法以任何方式修复。

我尝试了多种隐藏行的方法(物理选择行,右键单击和隐藏,使用 VBA 命令 "EntireRow.Hidden = True" 和使用 vba 命令 "hiding the rows using VBA RowHeigt =0".) 在所有情况下,一旦行取消隐藏并且按钮再次可见,它就不再可点击。

我找到的解决方法是将 activeX 按钮的设置更改为 "don't move or size with cells"。然后,当使用 VBA 代码隐藏一行时,我添加了额外的代码来隐藏按钮

ActiveSheet.OLEObjects("OptionButton1").Visible = False

这并不理想,但它似乎至少给出了按钮隐藏在行的其余内容中的外观。

我遇到了同样的问题:ActiveX 控件在隐藏和取消隐藏后出现奇怪的行为。我找到了解决这个问题的方法:只需在带有控件的行上方放置一个无用的行,当取消隐藏控件时,只需隐藏和取消隐藏无用的行。它将“强制”您的控件放置在正确的位置。 此方法不需要知道控件的坐标:如果它不是 sheet 中的固定控件(可隐藏的行在上面,...)

,则非常有用

我建议您将此“调试”行放在 sheet 的顶部,因为它会影响它下面的每个 ActiveX 控件,因此 sheet.[=11 的每个控件=]

这是一个 link 示例文件:https://docs.google.com/spreadsheets/d/1s1PMUA7VXtl0ubtYkgUx99wGl5q-JbcR/edit?usp=sharing&ouid=101340884497702807552&rtpof=true&sd=true

(如果我的英语不完美,我很抱歉)