|
|
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Добрый день. Нужна помощь. Подглядел здесь макрос на очистку ячеек: 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 Всё отлично работает. Но при этом удаляются и формулы в этих ячейках! Как сохранить формулы при очистке? Очень нужно по работе. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 18:35:22 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
oleg76Как сохранить формулы при очистке?Не очищай эти ячейки и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 18:36:52 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Я бы с радостью... У меня 15 столбцов, каждые 30 секунд прибавляются значения. Необходимо отслеживать динамику в определённые моменты времени. Т.е. обнулять значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 18:51:13 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 18:55:35 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Вместо Код: plaintext поставь Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 18:56:49 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Спасибо, домой доберусь проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 18:59:46 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
oleg76Я бы с радостью... У меня 15 столбцов, каждые 30 секунд прибавляются значения. Необходимо отслеживать динамику в определённые моменты времени. Т.е. обнулять значения.Эта задача не для Экселя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 19:13:10 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Вместо rng.ClearContents поставь rng.SpecialCells(xlCellTypeConstants).ClearContents Пишет ошибка 400 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 00:46:07 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
oleg76Вместо rng.ClearContents поставь rng.SpecialCells(xlCellTypeConstants).ClearContents Пишет ошибка 400 ??? Должно работать! Ошибка возникает только если в диапазоне rng нет констант, но не 400. Скорее всего у вас проблема с диапазоном rng, хотя не уверен. Хотите выложите файл с ошибкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 08:05:25 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Должно работать! Ошибка возникает только если в диапазоне 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 они накладываются на те записи, что уже были. Помогите решить эту проблему (если вообще есть решение)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 11:57:03 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
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) Наймите профессионала. Задачи реального времени решить силами бухгалтерии не реально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 19:21:58 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Я думаю тут White Owl немного погорячисля White Owl 1) Убить к чертям Эксель. Эта задача не для него. Делаешь маленького демона который с нужной частотой опрашивает или сама получает данные из источников. Демон записывает эти данные в файл. Отдельная программа мониторит этот файл и рисует графики вытаскивая нужные временные куски. Если я например кроме Exel ничего не знаю и учить особо некогда (хотя я собираюсь), то мне вполне подошёл бы и он. Во всём остальном хочу сказать что несмотря на то что задача описана неконкретно, она вероятнее всего реализума без особых сложнотей. Вот только 1) Это не дело 10 мин 2) Не очень ясно что в 14,15,16 столбцах? Как там оно должно накапливаться? Как это оно очищается? Когда очищается и как проиходит заполнение после очистки? Вообщем образ цели у меня лично не сложился. Поэтому чёткого ничего посоветовать не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 22:10:47 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
White Owl 3) Наймите профессионала. Задачи реального времени решить силами бухгалтерии не реально. Это конечно самый хороший вариант! Только действительно профессионала. а не того кто из часовой задачи превратит это в мегапроет по разработке приложения для рисования 2-х графиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 22:13:31 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы и участие. Буду думать дальше, а пока делать чистку вручную... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 22:30:31 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
oleg76Спасибо за советы и участие. Буду думать дальше, а пока делать чистку вручную... Так если ты вручную знаешь как делать и можешь это изобразить, то макросом не составит особого труда повторить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 22:53:43 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
DeggasadЯ думаю тут White Owl немного погорячисля Хе-хе :-) Тут я отчасти согласен с Совой - гантелей конечно можно гвозди забивать, а в Excel можно даже вполне сносную анимацию делать, но... И дело даже не в сложности, а в нецелесообразности. И потом, очень вероятно, что при постоянном удалении строк файл "коррумпируется" или выскочит подлый Application Error с аварийным закрытием, потерей данных и, главное, прерыванием рабочего процесса :-( KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 22:58:34 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
KL (XL) DeggasadЯ думаю тут White Owl немного погорячисля Хе-хе :-) Тут я отчасти согласен с Совой - гантелей конечно можно гвозди забивать, а в Excel можно даже вполне сносную анимацию делать, но... И дело даже не в сложности, а в нецелесообразности. И потом, очень вероятно, что при постоянном удалении строк файл "коррумпируется" или выскочит подлый Application Error с аварийным закрытием, потерей данных и, главное, прерыванием рабочего процесса :-( KL [MVP - Microsoft Excel] Хе-хе :-) Ну а если я другого не умею, и нужно мне это так постольку поскольку. Ну никто денег на программера не даст - это раз. И никто не умрёт если всё рухнет - это два. Я грудью не стою за Exel, но в данном конкретном случае человек спрашивает на форуме по ОФИСУ, возможно ли это в ЭКСЕЛе. Я отвечаю возможно, хотя лучше конечно воспользоваться специальными средствами и специальными людми... А не то что убей нах.. Эксель и пипец...Кто его знает зачем ему - может поспорил с кем что в Экселе сделает :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 23:11:59 |
|
||
|
Очистка ячеек
|
|||
|---|---|---|---|
|
#18+
Я прекрасно понимаю что эксель, не самый лучший вариант решения. Но он более знаком мне, все расчёты виду в экселе, помимо данной задачи. Просто хотел посоветоваться с людьми, более глубже понимающими в данной области чем я. С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 23:35:10 |
|
||
|
|

start [/forum/topic.php?fid=61&tid=2182615]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 357ms |

| 0 / 0 |
