|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.02.2013, 12:47 | #1 |
Форумчанин
Регистрация: 15.12.2011
Сообщений: 355
|
VBA код. Очистка листа и сортировка.
Здравствуйте уважаемые гуру.
Написал код. надо перед новым запуском программы очистить все записи. Сначала записал перед циклом "Сlear", но убирает и шапку и форматы дат. ClearContens лучше, но зачем чистить весь лист? Когда нужно только записи и шапку оставить. Можно, конечно перед циклом после очистки записать шапку, но как то непрофессионально. И ещё. Надо отфильтровать лист по датам по столбцу "Н". Чё то я затупил. И макрорекодером записывал, и код уважаемого EducatedFool пробовал. Не катит. Если сортирую в листе, первый столбец № по порядку сбивается.Вобщем я в панике. Помогите начинающему самоучке. Private Sub Start_Click() Dim sData As Date sData = Now() Dim iArhRow As Integer iArhRow = 2 Dim wsArh As Worksheet Set wsArh = Worksheets("Àðõèâ") Dim wsPr As Worksheet Set wsPr = Worksheets("Ïðèñóòñòâóþùèå") Dim wsDep As Worksheet Set wsDep = Worksheets("Ãðàôèê îòúåçäîâ") Dim wsArr As Worksheet Set wsArr = Worksheets("Ãðàôèê ïðèåçäîâ") Dim iPrRow As Integer iPrRow = 2 wsPr.Cells.ClearContents Do While Cells(iArhRow, 9) <> "" If Cells(iArhRow, 9) <= sData And Cells(iArhRow, 10) > sData Or Cells(iArhRow, 10) = "" Then wsPr.Cells(iPrRow, 2) = wsArh.Cells(iArhRow, 2) wsPr.Cells(iPrRow, 3) = wsArh.Cells(iArhRow, 3) wsPr.Cells(iPrRow, 4) = wsArh.Cells(iArhRow, 5) wsPr.Cells(iPrRow, 5) = wsArh.Cells(iArhRow, 6) wsPr.Cells(iPrRow, 7) = wsArh.Cells(iArhRow, 9) wsPr.Cells(iPrRow, 8) = wsArh.Cells(iArhRow, 10) wsPr.Cells(iPrRow, 1) = iPrRow - 1 iPrRow = iPrRow + 1 End If iArhRow = iArhRow + 1 Loop 'wsPr.Range("B2:H11000").Sort wsPr.Range("H2:Н1000"), xlAscending End Sub Последний раз редактировалось riniks17; 13.02.2013 в 12:55. |
13.02.2013, 13:15 | #2 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
например, для удаления данных со второй строки подойдёт такой код:
Код:
Правильно поставленная задача - три четверти решения.
|
13.02.2013, 15:00 | #3 |
Форумчанин
Регистрация: 15.12.2011
Сообщений: 355
|
|
13.02.2013, 15:15 | #4 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Код:
Правильно поставленная задача - три четверти решения.
|
|
13.02.2013, 15:34 | #5 |
Форумчанин
Регистрация: 15.12.2011
Сообщений: 355
|
|
13.02.2013, 18:52 | #6 |
Форумчанин
Регистрация: 15.12.2011
Сообщений: 355
|
С сортировкой по столбцу "Н" кто-нить могёт помочь? Начиная со второй строки.
|
14.02.2013, 08:29 | #7 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Код:
Правильно поставленная задача - три четверти решения.
|
14.02.2013, 12:28 | #8 |
Форумчанин
Регистрация: 15.12.2011
Сообщений: 355
|
Полтергейст. Вчера вечер убил. И писал то же самое (почти ). А сегодня Ваш код вставил и всё заработало. Только Range(wsPr.[H2], wsPr.Cells(wsPr.Rows.Count, 1).сюда Н1 вставил. А то код вторую строчку за Header считал. И всё заработало. А где хоть плюсануть Вас можно, уважаемый?
|
14.02.2013, 13:36 | #9 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Правильно поставленная задача - три четверти решения.
|
|
15.02.2013, 13:58 | #10 |
Форумчанин
Регистрация: 15.12.2011
Сообщений: 355
|
Ыщо одна задача. Хочу, что в код вставить формулу для определения номера недель. Просто вставить в код, получается.
wsPr.Range("I2").FormulaLocal = "=Номнедели(G2;21)" а вставляю в цикл, ругаеццо. Do While Cells(iArhRow, 9) <> "" If Cells(iArhRow, 9) <= sData And Cells(iArhRow, 10) >= sData Or Cells(iArhRow, 10) = "" Then wsPr.Cells(iPrRow, 2) = wsArh.Cells(iArhRow, 2) wsPr.Cells(iPrRow, 3) = wsArh.Cells(iArhRow, 3) wsPr.Cells(iPrRow, 4) = wsArh.Cells(iArhRow, 5) wsPr.Cells(iPrRow, 5) = wsArh.Cells(iArhRow, 6) wsPr.Cells(iPrRow, 7) = wsArh.Cells(iArhRow, 9) wsPr.Cells(iPrRow, 8) = wsArh.Cells(iArhRow, 10) wsPr.Cells(iPrRow, 9).FormulaLocal = "=Номнедели(ArhRow, 9;[21])" wsPr.Cells(iPrRow, 1) = iPrRow - 1 iPrRow = iPrRow + 1 End If iArhRow = iArhRow + 1 |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Свой код для каждого листа | Brucebelg | Microsoft Office Excel | 11 | 26.01.2012 17:21 |
Как получить список именованных диапазонов листа через VBA | myprog | Microsoft Office Excel | 1 | 14.05.2011 13:57 |
При создании нового листа программно поставить на него защиту (с помощью VBA) | Lis000iq | Microsoft Office Excel | 2 | 30.06.2009 18:41 |
Как средствами VBA сделать точную копию листа и вставить ее в конец книги? | Pavel_Ine | Microsoft Office Excel | 13 | 10.06.2009 19:39 |
Печать листа через VBA | Волк | Microsoft Office Excel | 1 | 27.02.2009 11:37 |