Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 14:38   #11
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

[QUOTE=The_Prist;486807]Одну скобку забыл
Код:
.Range(.Cells(Строка, Колонка), .Cells(.cells(Строка, Колонка).End(xlDown).row, Колонка)).ClearContents
/QUOTE]
Про попытке воздействовать на объединенную ячейку (на первую ячейку) выводиться сообщение: "Изменить часть объединенной ячейки невозможно."
Это лечиться?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 26.03.2010, 14:52   #12
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Лечиться снятием объединения, либо захватом большего диапазона, чтоб объединенная ячейка была захвачена полностью.

Для снятия объединения
Код:
.Range(.Cells(Строка, Колонка), .Cells(.cells(Строка, Колонка).End(xlDown).row, Колонка)).UnMerge
.Range(.Cells(Строка, Колонка), .Cells(.cells(Строка, Колонка).End(xlDown).row, Колонка)).ClearContents
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 26.03.2010, 15:03   #13
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Лечиться снятием объединения, либо захватом большего диапазона, чтоб объединенная ячейка была захвачена полностью.

Для снятия объединения
Код:
.Range(.Cells(Строка, Колонка), .Cells(.cells(Строка, Колонка).End(xlDown).row, Колонка)).UnMerge
.Range(.Cells(Строка, Колонка), .Cells(.cells(Строка, Колонка).End(xlDown).row, Колонка)).ClearContents
Задача усложняется тем что очищаются ВСЕ занятые ячейки, А вот какай из них из них окажется объединено (а может все они) не известно, и выяснить это без поячейного просмотра не возможно. То есть теряется вся прелесть метода очисти. И легче обойтись без него...
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 26.03.2010, 15:24   #14
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Лечиться снятием объединения, либо захватом большего диапазона, чтоб объединенная ячейка была захвачена полностью.

Для снятия объединения
Код:
.Range(.Cells(Строка, Колонка), .Cells(.cells(Строка, Колонка).End(xlDown).row, Колонка)).UnMerge
.Range(.Cells(Строка, Колонка), .Cells(.cells(Строка, Колонка).End(xlDown).row, Колонка)).ClearContents
Пришлось отказаться от этого метода... :(
Пока использую вот такой код:
Код:
                            i = 0
                            Do Until Sheets(Лист).Cells(Строка + i, Колонка).Value = ""
                                Sheets(Лист).Cells(Строка + i, Колонка).Value = ""
                                i = i + 1
                            Loop
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 26.03.2010, 15:30   #15
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Так что мешает так сделать?
Код:
.Range(.Cells(Строка, Колонка), .Cells(.Cells(Строка, Колонка).End(xlDown).Row, Колонка)).Value = ""
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 26.03.2010, 15:43   #16
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Так что мешает так сделать?
Код:
.Range(.Cells(Строка, Колонка), .Cells(.Cells(Строка, Колонка).End(xlDown).Row, Колонка)).Value = ""
Как оказалось ни чего не мешает. :) Спасибо!
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 28.03.2010, 00:50   #17
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Так что мешает так сделать?
Код:
.Range(.Cells(Строка, Колонка), .Cells(.Cells(Строка, Колонка).End(xlDown).Row, Колонка)).Value = ""
Будешь смеяться, но я вернулся к варианту с циклом.
Приведенная тобою строка, хорошо отрабатывается первый раз. Но при последующих повторных запусках ведет себя неадекватно. Начинает стирать при каждом следующем запуске на строчку больше. Такое ощущение, что она не воспринимает записаное ей же (при прошлых запусках) нулевую строку, как пустую ячейку. При этом данное поведение проявляется только при стирании в цикле нескольких соседних колонок. Если стираем только одну колонку, все замечательно.
Так что от греха подальше веренул цикл на стирание "в ручную". Работает корректно всегда.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 28.03.2010, 13:10   #18
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Будешь смеяться...
Конечно буду. Сама по себе данная строка не может стирать другой диапазон. Она стирает только тот диапазон, который ей задали.
Единственный затык - она не стирает значение, а заносит в ячейку строку нулевой длины, отсюда и может последовать неверное определение последней ячейки.

На всякий случай попробуй так:
Код:
.Range(.Cells(Строка, Колонка), .Cells(.Cells(Строка, Колонка).End(xlDown).Row, Колонка)).Value = Empty
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 28.03.2010 в 13:13.
The_Prist вне форума Ответить с цитированием
Старый 28.03.2010, 21:05   #19
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
На всякий случай попробуй так:
Код:
.Range(.Cells(Строка, Колонка), .Cells(.Cells(Строка, Колонка).End(xlDown).Row, Колонка)).Value = Empty
Результат (вернее проблемы) то же.
Как-то странно оно ведет себя при многокрантых вызовах. Ну да ладно, работа цикла мены вполне устраивает, да и строчек не на много больше.

Спасибо за советы!
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с многоуровневой адресацией grook Общие вопросы C/C++ 3 18.12.2010 17:15
Проблема с адресацией к элементам формы (696 элементов) alvazor Microsoft Office Excel 4 16.02.2010 15:36
Помогите с адресацией листа в формуле ABCOz Microsoft Office Excel 2 09.09.2009 13:38
Помогите новичку с адресацией разобраться Zeneth Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 16.06.2009 19:55