Как я могу обновить текст в объединенной ячейке с помощью VBA? - PullRequest
4 голосов
/ 18 ноября 2011

Предположим, у меня есть 2 объединенные ячейки, скажем, Sheet1!$A$1:$B$1.

И скажем, есть фрагмент текста, который сосредоточен в обеих ячейках. Как программно обновить это значение с помощью VBA? У меня есть простая форма пользователя с кнопкой, при нажатии кнопки я хочу обновить ячейку.

Я пытался захватить Range, но, похоже, это не сработало.

Ответы [ 4 ]

14 голосов
/ 18 ноября 2011

В дополнение к другим ответам, стоит отметить, что вы также можете использовать MergeArea для обновления через одну из ячеек:

Range("A1").MergeArea.Value="New value"
Range("B1").MergeArea.Value="New value"

Если ячейка не объединена, то она просто игнорирует MergeArea (т.е. обрабатывает ее как объединенную область с одной ячейкой ...)

6 голосов
/ 18 ноября 2011

Если вы объединили ячейки, то вы можете редактировать только значение объединенных ячеек, ссылаясь на самую верхнюю левую ячейку.

Таким образом, если объединены A1 и B1, единственный способ изменитьдата:

Range("A1").value = "data"

Или

Cells(1,1).Value = "data"

Вызов Range("B1").Value = "data" не изменит видимый текст.

0 голосов
/ 12 марта 2015

Используйте эту функцию, если вам нужно сослаться на ячейку, которая может или не может быть частью объединенного диапазона:

Function Reference_cell_even_if_merged(Cell_Range As Range) As Range
If Cell_Range.MergeCells Then
    Set Reference_cell_even_if_merged = Cell_Range.MergeArea
Else
    Set Reference_cell_even_if_merged = Cell_Range
End If
End Function
0 голосов
/ 18 ноября 2011

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

Worksheets("Sheet1").Cells(1,1).Value = "New Value"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...