Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
5 / 5 / 0
Регистрация: 02.01.2017
Сообщений: 164
1

Условие макроса сравнение дат и времени работает не корректно.Как это исправить?

30.04.2017, 02:27. Показов 3254. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Макрос_1()
 
For i = 5 To Sheets("Ввод Данных").Range("A" & Rows.Count).End(xlUp).Row
    If Sheets("Ввод Данных").Range("A" & i) > Sheets("Ввод Данных").Range("B1") Then
    
    Sheets("Ввод Данных").Range("C" & i).ClearContents
 
    End If
Next i
 
End Sub
Этот макрос удаляет значения в ячейках начиная со строки 5 по всему столбцу C при условии что если в столбце А этой же строки так же с 5 строки значение в ячейке больше значения из ячейки B1 и это значение дата и время вот в таком формате 03.04. 00:15 и если дата в ячейке из столбца А больше то условие выполнено,но условие работает не корректно,даты не верно понимаются макросом.Вопрос кто знает как прописать код чтобы макрос работал нормально?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2017, 02:27
Ответы с готовыми решениями:

Сравнение дат\ времени
Доброго времени суток! Есть необходимость сравнивать даты, превая дата получается в реале(Get-Date...

Сравнение дат и времени 2
Всем доброго времени суток, возникла необходимость распарсить лог в котором содержится период, и...

Запрос не всегда корректно работает. Как исправить?
Есть такие, упрощённо, таблицы: CREATE TABLE dbo.DataTable ( CityId uniqueidentifier NOT...

Необходимо создать условие - сравнение двух дат с текущей датой
Пожалуйста, помогите создать условие... (( 1) Необходимо сравнить две Даты и если они отличаются...

8
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
30.04.2017, 09:53 2
03.04. 00:15 это не дата, а текст. Если же отсутствие года предполагает, что речь идёт о текущем, то такой текст можно преобразовать в дату, но здесь лучше говорить не абстрактно, а имея на руках часть файла с проблемными "датами", ибо источник проблемы может быть не только в этом.
0
5 / 5 / 0
Регистрация: 02.01.2017
Сообщений: 164
30.04.2017, 14:18  [ТС] 3
Если это не дата,то помогите с макросом с новым условием,который просто очистит значения во всех ячейках выше тех строк между столбцами A и F если это значение из ячейки B1 будет в столбце А.нужно чтобы макрос нашёл значение из ячейки B1 в столбце А и очистил строки выше этого значения по 4 строку(4 строку не стирал),а очистил от столбца А до F включительно.Можете помочь в написании такого макроса или мне создать новую тему на форуме? В файле для примера зелёным цветом указан диапазон ячеек для очистки.
0
5 / 5 / 0
Регистрация: 02.01.2017
Сообщений: 164
30.04.2017, 14:19  [ТС] 4
вот тут
Вложения
Тип файла: xlsx Пример..xlsx (10.0 Кб, 3 просмотров)
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
30.04.2017, 14:37 5
Лучший ответ Сообщение было отмечено Aleks 1978 как решение

Решение

В новой задаче - уже всё проще :

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Test()
    Dim iCell As Range
 
    With Worksheets("Ввод Данных")
         Set iCell = .Range("A:A").Find(.Range("B1"), , xlValues, xlWhole)
         If iCell Is Nothing Then Exit Sub: If iCell.Row = 5 Then Exit Sub
         
         .Range(.Cells(5, 6), iCell(0)).ClearContents
    End With
End Sub
1
5 / 5 / 0
Регистрация: 02.01.2017
Сообщений: 164
30.04.2017, 15:07  [ТС] 6
Скопировал его в модуль,хочу запустить но его в списке макросов нет???Если Sub без Private то в списке есть но не работает выдает ошибку
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
30.04.2017, 15:17 7
На какой строке выдаёт ошибку ?
0
5 / 5 / 0
Регистрация: 02.01.2017
Сообщений: 164
30.04.2017, 20:23  [ТС] 8
Всё,разобрался

Добавлено через 5 часов 5 минут
Visual Basic
1
 .Range(.Cells(5, 6), iCell(0)).ClearContents
а как изменить эту строку кода чтобы строка 5 осталась такой же,а диапазон очищения ячеек был теперь между двумя столбцами например C и M. как это записать в коде ???
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
30.04.2017, 21:11 9
Лучший ответ Сообщение было отмечено Aleks 1978 как решение

Решение

Для старого примера, где неизменна строка#4

Visual Basic
1
.Range(.Cells(5, 13), iCell(0, 3)).ClearContents
или

Visual Basic
1
.Range(.Cells(5, 3), iCell(0, 13)).ClearContents
1
30.04.2017, 21:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2017, 21:11
Помогаю со студенческими работами здесь

Не корректно работает условие While
Напечатать значения функции y=ln(x+1/x),где значения x вводятся с клавиатуры. При вводе числа, не...

Не корректно работает условие
Есть такой код: count = 0 sql = '''INSERT INTO items (res_id, log_id, link, title, content,...

Сравнение дат, не работает функция
Ребят, помогите пожалуйста исправить функцию. Я должна сделать программу с таким заданием:...

Простой калькулятор: Не работает код, как это исправить?
Здравствуйте! Вот имеется такой код, взят отсюда, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru