VBA в Excel нуждается в невежестве: настройка Cell.RowHeight изменяет значение ячейки на TRUE или FALSE? - PullRequest
0 голосов
/ 11 апреля 2009

EDIT:

Это происходило потому, что для ячейки было установлено свойство 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

1 Ответ

1 голос
/ 11 апреля 2009

Это хорошо для меня, хотя я использую Office XP, а не 2003. Вы уверены, что этот код (или только код) работает для этой кнопки?

Он правильно устанавливает высоту, но не изменяет содержимое ячейки вообще.

Я пробовал это как макрос, управляемый нажатием клавиши, так и командную кнопку на листе без проблем.

UPDATE:

Исходя из ваших правок, в которых вы заявляете, что используете LinkedCell для поиска ячейки по кнопке, я не думаю, что вы используете ее правильно. LinkedCell связывает значение ячейки со значением элемента управления.

Что происходит, когда вы нажимаете кнопку, так это то, что ее значение устанавливается на логическое значение (возможно, true, когда нажата, а false, когда отпущено, я точно не знаю). Поскольку это связано с ячейкой, значение ячейки также меняется на значение кнопки. Вам нужно найти другой способ «связать» кнопку с ячейкой.

Моей первой мыслью было бы связать ее с ячейкой B1 так, чтобы ваши значения были в A1, A2, A3, ... (назовем их Ax), а ваши кнопки управления были (и связаны с) Bx и don ' не используйте 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 или с любым самым правым столбцом в строке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...