【问题标题】:VBA in Excel ignoramous in need: setting Cell.RowHeight changes the cell value to TRUE or FALSE?Excel 中的 VBA 无知需要:设置 Cell.RowHeight 将单元格值更改为 TRUE 或 FALSE?
【发布时间】:2015-05-28 17:13:44
【问题描述】:

编辑:

发生这种情况是因为单元格设置为按钮的 LinkedCell 属性。当我将其设置为 null 时,一切正常(当然,我使用的是该属性,但是很好)。

无法通过 Google 找到任何关于此的内容...

我有一个单元格,该单元格在一个相当窄的列中包含大量文本。我想要一个按钮,用于在按下单元格时展开/缩回单元格的高度(你知道,“显示”和“隐藏”)。问题是,每当我设置单元格的 RowHeight 属性时,单元格的值都会设置为 TRUE 或 FALSE。有人能告诉我这是为什么吗?

顺便说一句,我使用的是 Excel 2003。

Private Sub ToggleButton1_Click()
    new_caption = ToggleButton1.Caption
    Dim height As Integer
    If new_caption = "Show" Then
        new_caption = "Hide"
        height = 125
    Else
        new_caption = "Show"
        height = ToggleButton1.height
    End If
    ToggleButton1.Caption = new_caption
    Range(ToggleButton1.LinkedCell).RowHeight = height
End Sub

【问题讨论】:

  • @Ed,您的更新(或我现在看到的恢复)确实显示了问题 - 请参阅我更新的答案以获得解释和可能的修复。

标签: vba excel


【解决方案1】:

虽然我使用的是 Office XP 而不是 2003,但这对我来说很好用。您确定这是为该按钮运行的代码(或唯一的代码)吗?

它正确设置了高度,但根本不改变单元格的内容。

我已经尝试将其作为由按键驱动的宏和工作表上的命令按钮,没有问题。

更新:

根据您声明您正在使用 LinkedCell 从按钮中查找单元格的编辑,我认为您没有正确使用它。 LinkedCell 将单元格的值绑定到控件的值。

按下按钮时发生的情况是它的值被设置为布尔值(按下时可能为真,释放时可能为假,我不确定)。因为它链接到一个单元格,所以单元格值也将更改为按钮值。您需要找到一种不同的方式将按钮“链接”到单元格。

我的第一个想法是将其链接到单元格 B1,以便您的值位于 A1、A2、A3...(我们称它们为 Ax)中,并且您的控件按钮位于(并链接到)Bx 中并且不要不要将 Bx 用于其他任何事情(按钮可能无论如何都会出现在它们上方)。

            A               B
  +--------------------+--------+
1 | Long text which is | [Hide] |
  | wrapped because    |        |
  | the state is SHOW. |        |
  +--------------------+--------+
2 | More text which is | [Hide] |
  | wrapped because    |        |
  | the state is SHOW. |        |
  +--------------------+--------+
3 | Hidden text becaus | [Show] |
  +--------------------+--------+
4 | Even more text     | [Hide] |
  | that's wrapped     |        |
  | because the state  |        |
  | is SHOW.           |        |
  +--------------------+--------+

然后在您的 VBA 代码中,您仍然可以设置 Bx 的行高(因为它会影响整行)并且您不会关心 B 列单元格中放置了什么 - A 列单元格的值将保持不变。

或者,如果您正在将 B 列用于某事,请将其链接到 ZZx(或 IVx 或任何最右边的列在一行中)。

【讨论】:

  • 我从原始帖子中删除了显示问题所在的代码。我已经编辑了原始帖子。
  • 是的,我最终选择了与您上次建议相同的路线。非常感谢,你说得对。
猜你喜欢
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多