Вопрос № 115070: Здравствуйте, уважаемые эксперты. Я сейчас работаю в Excel'е с макросом. И вот хочу спросить одну задачу. Как можно проверить, объединен ли ячейки? Как надо проверить этот параметр в макросе. Спасибо....
Вопрос № 115.070
Здравствуйте, уважаемые эксперты. Я сейчас работаю в Excel'е с макросом. И вот хочу спросить одну задачу. Как можно проверить, объединен ли ячейки? Как надо проверить этот параметр в макросе. Спасибо.
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Muhammedov Abdurohman!
If Selection.MergeCells Then
MsgBox "Объединены"
Else
MsgBox "He Объединены"
End If
--------- Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 20.12.2007, 17:14 Оценка за ответ: 3 Комментарий оценки: Ответ может и правильный. Но на моем вопросе не нашел ответа. Если будет такой цикл, но сразу выдаст ошибку For i=1 to 65536 ActiveSheet.Cells(i,1)=”1” Next
Отвечает: Черников Игорь Владимирович
Здравствуйте, Muhammedov Abdurohman!
x = Range("G7").MergeCells
Если ячейка G7 объединена с какой-нибудь другой, то Х бедет равен True
--------- От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 9-ый класс)
Ответ отправлен: 20.12.2007, 17:47 Оценка за ответ: 4
Отвечает: HookEst
Здравствуйте, Muhammedov Abdurohman!
Действительно, MergeCells вернет True если диапазон содержится в объединении ячеек.
не совсем ясно, что за ошибка возникает в:
Если будет такой цикл, но сразу выдаст ошибку
For i=1 to 65536
ActiveSheet.Cells(i,1)="1"
Next
причем здесь объединения?
Также свойство MergeArea возвращает объединеный диапазон содержащий указаную ячейку. Если ячейка ни с чем не объединена, возвращается сама эта ячейка. Чтобы проверить что именно вернулось, надо сравнить Address:
If Cells(i,1).MergeArea.Address=Cells(i,1).Address Then
'Not Merged
Else
'Merged
End If
если нужно присвоить значение объединению(т.е. только первой ячейке его, остальные пропустить), то используйте MergeArea.Cells(1):
For i=1 to 65536
If Cells(i,1).MergeArea.Cells(1).Address=Cells(i,1).Address Then
'Cells(i,1) или не объединена, или является первой ячейкой объединения
Cells(i,1)=1
End If
Next i
Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 21.12.2007, 07:27 Оценка за ответ: 5 Комментарий оценки: Спасибо. То что хотел