Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Очистка ячеек / 18 сообщений из 18, страница 1 из 1
10.07.2007, 18:35:22
    #34651453
oleg76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Добрый день.
Нужна помощь.
Подглядел здесь макрос на очистку ячеек:

Sub sad()
Dim RowMax: RowMax = ActiveWorkbook.Worksheets("Лист2").Range("A:J").Find("*", , , xlWhole, xlByRows, xlPrevious).Row
Dim rng As Range
Set rng = ActiveWorkbook.Worksheets("Лист2").Range("A6:J" & CStr(RowMax))
rng.ClearContents
Set rng = Nothing
End Sub

Всё отлично работает.
Но при этом удаляются и формулы в этих ячейках!
Как сохранить формулы при очистке?
Очень нужно по работе.
Заранее благодарен.
...
Рейтинг: 0 / 0
10.07.2007, 18:36:52
    #34651459
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
oleg76Как сохранить формулы при очистке?Не очищай эти ячейки и все.
...
Рейтинг: 0 / 0
10.07.2007, 18:51:13
    #34651508
oleg76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Я бы с радостью...
У меня 15 столбцов,
каждые 30 секунд прибавляются значения.
Необходимо отслеживать динамику в определённые моменты времени.
Т.е. обнулять значения.
...
Рейтинг: 0 / 0
10.07.2007, 18:55:35
    #34651517
Chelovek Tapok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Dim i As Long, j As Long
Dim Visota As Long, Shirina As Long
Dim Massiv() As Variant

Application.ScreenUpdating = False

If Cells(1, 1) = "" Then
Cells(1, 1) = " "
End If

Visota = ActiveSheet.UsedRange.Rows.Count
Shirina = ActiveSheet.UsedRange.Columns.Count

ReDim Massiv(1 To Visota, 1 To Shirina)

For i = 1 To Visota
For j = 1 To Shirina
Massiv(i, j) = Cells(i, j).Formula
If InStr(Massiv(i, j), "=") <> 1 Then
Massiv(i, j) = Empty
End If
Next j
Next i

Range(Cells(1, 1), Cells(Visota, Shirina)) = Massiv
...
Рейтинг: 0 / 0
10.07.2007, 18:56:49
    #34651521
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Вместо
Код: plaintext
rng.ClearContents

поставь
Код: plaintext
rng.SpecialCells(xlCellTypeConstants).ClearContents
...
Рейтинг: 0 / 0
10.07.2007, 18:59:46
    #34651531
oleg76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Спасибо, домой доберусь проверю.
...
Рейтинг: 0 / 0
10.07.2007, 19:13:10
    #34651559
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
oleg76Я бы с радостью...
У меня 15 столбцов,
каждые 30 секунд прибавляются значения.
Необходимо отслеживать динамику в определённые моменты времени.
Т.е. обнулять значения.Эта задача не для Экселя.
...
Рейтинг: 0 / 0
11.07.2007, 00:46:07
    #34651990
oleg76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Вместо
rng.ClearContents

поставь

rng.SpecialCells(xlCellTypeConstants).ClearContents




Пишет ошибка 400 ???
...
Рейтинг: 0 / 0
11.07.2007, 08:05:25
    #34652115
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
oleg76Вместо
rng.ClearContents

поставь

rng.SpecialCells(xlCellTypeConstants).ClearContents




Пишет ошибка 400 ???

Должно работать!
Ошибка возникает только если в диапазоне rng нет констант, но не 400.
Скорее всего у вас проблема с диапазоном rng, хотя не уверен.
Хотите выложите файл с ошибкой.
...
Рейтинг: 0 / 0
11.07.2007, 11:57:03
    #34652764
oleg76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Должно работать!
Ошибка возникает только если в диапазоне rng нет констант, но не 400.
Скорее всего у вас проблема с диапазоном rng, хотя не уверен.
Хотите выложите файл с ошибкой.

Всё абсолютно правильно, это я туплю.
Просто не могу найти решения проблемы.
Попробую спросить с другой стороны.
Есть макрос:

Option Explicit
Public Const RateCellAddress1 = "$C$1"
Public Const RateCellAddress2 = "$C$1"
Public Const RateCellAddress3 = "$C$1"
Public Const RateCellAddress4 = "$C$1"
Public Const RateCellAddress5 = "$C$1"
Public Const RateCellAddress6 = "$C$1"
Public Const RateCellAddress7 = "$C$1"
Public Const RateCellAddress8 = "$C$1"
Public Const RateCellAddress9 = "$C$1"
Public Const RateCellAddress10 = "$C$1"
Public Const RateCellAddress11 = "$C$1"
Public Const RateCellAddress12 = "$C$1"
Public Const RateCellAddress13 = "$C$1"
Public Const RateCellAddress14 = "$C$1"
Public Const RateCellAddress15 = "$C$1"

Public Const RateSheetName1 = "Лист1"
Public Const RateSheetName2 = "Лист2"
Public Const RateSheetName3 = "Лист3"
Public Const RateSheetName4 = "Лист4"
Public Const RateSheetName5 = "Лист5"
Public Const RateSheetName6 = "Лист6"
Public Const RateSheetName7 = "Лист7"
Public Const RateSheetName8 = "Лист8"
Public Const RateSheetName9 = "Лист9"
Public Const RateSheetName10 = "Лист10"
Public Const RateSheetName11 = "Лист11"
Public Const RateSheetName12 = "Лист12"
Public Const RateSheetName13 = "Лист13"
Public Const RateSheetName14 = "Лист14"
Public Const RateSheetName15 = "Лист15"


Sub WatchChanges()

Trace

Application.OnTime Now + TimeValue("00:00:30"), "WatchChanges"
End Sub

Sub Trace()
Const ColumnWhereRegister1 = 1
Const ColumnWhereRegister2 = 2
Const ColumnWhereRegister3 = 3
Const ColumnWhereRegister4 = 4
Const ColumnWhereRegister5 = 5
Const ColumnWhereRegister6 = 6
Const ColumnWhereRegister7 = 7
Const ColumnWhereRegister8 = 8
Const ColumnWhereRegister9 = 9
Const ColumnWhereRegister10 = 10
Const ColumnWhereRegister11 = 11
Const ColumnWhereRegister12 = 12
Const ColumnWhereRegister13 = 13
Const ColumnWhereRegister14 = 14
Const ColumnWhereRegister15 = 15

Const ColumnTime = 16

On Error Resume Next

With Cells(Rows.Count, ColumnWhereRegister1).End(xlUp).Offset(1, 0)
.Value = Worksheets(RateSheetName1).Range(RateCellAddress1).Value
.Offset(0, ColumnWhereRegister2 - ColumnWhereRegister1).Value = Worksheets(RateSheetName2).Range(RateCellAddress2).Value
.Offset(0, ColumnWhereRegister3 - ColumnWhereRegister1).Value = Worksheets(RateSheetName3).Range(RateCellAddress3).Value
.Offset(0, ColumnWhereRegister4 - ColumnWhereRegister1).Value = Worksheets(RateSheetName4).Range(RateCellAddress4).Value
.Offset(0, ColumnWhereRegister5 - ColumnWhereRegister1).Value = Worksheets(RateSheetName5).Range(RateCellAddress5).Value
.Offset(0, ColumnWhereRegister6 - ColumnWhereRegister1).Value = Worksheets(RateSheetName6).Range(RateCellAddress6).Value
.Offset(0, ColumnWhereRegister7 - ColumnWhereRegister1).Value = Worksheets(RateSheetName7).Range(RateCellAddress7).Value
.Offset(0, ColumnWhereRegister8 - ColumnWhereRegister1).Value = Worksheets(RateSheetName8).Range(RateCellAddress8).Value
.Offset(0, ColumnWhereRegister9 - ColumnWhereRegister1).Value = Worksheets(RateSheetName9).Range(RateCellAddress9).Value
.Offset(0, ColumnWhereRegister10 - ColumnWhereRegister1).Value = Worksheets(RateSheetName10).Range(RateCellAddress10).Value
.Offset(0, ColumnWhereRegister11 - ColumnWhereRegister1).Value = Worksheets(RateSheetName11).Range(RateCellAddress11).Value
.Offset(0, ColumnWhereRegister12 - ColumnWhereRegister1).Value = Worksheets(RateSheetName12).Range(RateCellAddress12).Value
.Offset(0, ColumnWhereRegister13 - ColumnWhereRegister1).Value = Worksheets(RateSheetName13).Range(RateCellAddress13).Value
.Offset(0, ColumnWhereRegister14 - ColumnWhereRegister1).Value = Worksheets(RateSheetName14).Range(RateCellAddress14).Value
.Offset(0, ColumnWhereRegister15 - ColumnWhereRegister1).Value = Worksheets(RateSheetName15).Range(RateCellAddress15).Value
.Offset(0, ColumnTime - ColumnWhereRegister1).Value = Now
End With

End Sub

По 1-13 столбцам идут вычисления, 14-15 столбцы строятся два графика и в 16-ом фиксируется время.
Соответственно каждые 30 сек. прибавляется по одной строке.
Мне нужно периодически очищать значения в столбцах с 1-13, но так что бы в 14,15,16 столбцах
продолжали накапливаться значения (Пишутся графики по этим столбцам).

Что получается:
Делаю очистку с 1-13 столбцов, в 14-16 запись останавливается. И по всем 16 столбцам начинается всё заново (с первой строки). Только в 14-16 они накладываются на те записи, что уже были.

Помогите решить эту проблему (если вообще есть решение)...
...
Рейтинг: 0 / 0
11.07.2007, 19:21:58
    #34654676
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
oleg76Попробую спросить с другой стороны.
Есть макрос:Кошмар. Циклы делать религия не позволяет?

oleg76По 1-13 столбцам идут вычисления, 14-15 столбцы строятся два графика и в 16-ом фиксируется время.
Соответственно каждые 30 сек. прибавляется по одной строке.
Мне нужно периодически очищать значения в столбцах с 1-13, но так что бы в 14,15,16 столбцах
продолжали накапливаться значения (Пишутся графики по этим столбцам).Эта задача не имеет решения. Если в столбцах 14-16 находятся числа зависящие от чисел в первых 13-и столбцах то убивая исходные данные ты делаешь бессмыслеными итоговые значения.

oleg76Что получается:
Делаю очистку с 1-13 столбцов, в 14-16 запись останавливается. И по всем 16 столбцам начинается всё заново (с первой строки). Только в 14-16 они накладываются на те записи, что уже были.Что и следовало ожидать...




oleg76Помогите решить эту проблему (если вообще есть решение)...Решений куча:
1) Убить к чертям Эксель. Эта задача не для него. Делаешь маленького демона который с нужной частотой опрашивает или сама получает данные из источников. Демон записывает эти данные в файл. Отдельная программа мониторит этот файл и рисует графики вытаскивая нужные временные куски.
2) Если сильно хочется Эксель - стирай не исходные данные из столбцов. А уничтожай первые (самые устаревшие) строки целиком. Это решение способен воплотить в жизнь даже человек не умеющий писать циклы :)
3) Наймите профессионала. Задачи реального времени решить силами бухгалтерии не реально.
...
Рейтинг: 0 / 0
11.07.2007, 22:10:47
    #34654896
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Я думаю тут White Owl немного погорячисля

White Owl
1) Убить к чертям Эксель. Эта задача не для него. Делаешь маленького демона который с нужной частотой опрашивает или сама получает данные из источников. Демон записывает эти данные в файл. Отдельная программа мониторит этот файл и рисует графики вытаскивая нужные временные куски.


Если я например кроме Exel ничего не знаю и учить особо некогда (хотя я собираюсь), то мне вполне подошёл бы и он.
Во всём остальном хочу сказать что несмотря на то что задача описана неконкретно, она вероятнее всего реализума без особых сложнотей.
Вот только
1) Это не дело 10 мин
2) Не очень ясно что в 14,15,16 столбцах? Как там оно должно накапливаться? Как это оно очищается? Когда очищается и как проиходит заполнение после очистки? Вообщем образ цели у меня лично не сложился.

Поэтому чёткого ничего посоветовать не могу.
...
Рейтинг: 0 / 0
11.07.2007, 22:13:31
    #34654899
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
White Owl
3) Наймите профессионала. Задачи реального времени решить силами бухгалтерии не реально.

Это конечно самый хороший вариант! Только действительно профессионала. а не того кто из часовой задачи превратит это в мегапроет по разработке приложения для рисования 2-х графиков.
...
Рейтинг: 0 / 0
11.07.2007, 22:30:31
    #34654910
oleg76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Спасибо за советы и участие.
Буду думать дальше, а пока делать чистку вручную...
...
Рейтинг: 0 / 0
11.07.2007, 22:53:43
    #34654926
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
oleg76Спасибо за советы и участие.
Буду думать дальше, а пока делать чистку вручную...

Так если ты вручную знаешь как делать и можешь это изобразить, то макросом не составит особого труда повторить!
...
Рейтинг: 0 / 0
11.07.2007, 22:58:34
    #34654934
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
DeggasadЯ думаю тут White Owl немного погорячисля

Хе-хе :-) Тут я отчасти согласен с Совой - гантелей конечно можно гвозди забивать, а в Excel можно даже вполне сносную анимацию делать, но... И дело даже не в сложности, а в нецелесообразности. И потом, очень вероятно, что при постоянном удалении строк файл "коррумпируется" или выскочит подлый Application Error с аварийным закрытием, потерей данных и, главное, прерыванием рабочего процесса :-(

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
11.07.2007, 23:11:59
    #34654952
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
KL (XL) DeggasadЯ думаю тут White Owl немного погорячисля

Хе-хе :-) Тут я отчасти согласен с Совой - гантелей конечно можно гвозди забивать, а в Excel можно даже вполне сносную анимацию делать, но... И дело даже не в сложности, а в нецелесообразности. И потом, очень вероятно, что при постоянном удалении строк файл "коррумпируется" или выскочит подлый Application Error с аварийным закрытием, потерей данных и, главное, прерыванием рабочего процесса :-(

KL
[MVP - Microsoft Excel]

Хе-хе :-) Ну а если я другого не умею, и нужно мне это так постольку поскольку. Ну никто денег на программера не даст - это раз. И никто не умрёт если всё рухнет - это два.

Я грудью не стою за Exel, но в данном конкретном случае человек спрашивает на форуме по ОФИСУ, возможно ли это в ЭКСЕЛе. Я отвечаю возможно, хотя лучше конечно воспользоваться специальными средствами и специальными людми...
А не то что убей нах.. Эксель и пипец...Кто его знает зачем ему - может поспорил с кем что в Экселе сделает :-).
...
Рейтинг: 0 / 0
11.07.2007, 23:35:10
    #34654977
oleg76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка ячеек
Я прекрасно понимаю что эксель, не самый лучший вариант решения.
Но он более знаком мне, все расчёты виду в экселе, помимо данной задачи.
Просто хотел посоветоваться с людьми, более глубже понимающими в данной области чем я.
С уважением.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Очистка ячеек / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]