bokr
Дата: Четверг, 11.07.2019, 14:04 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
При обращении Cells(i,j) к ячейкам одного листа в одном операторе сравнения VBA воспринимает данные в одном случае как double в другом как string, хотя ячейки уже отформатированы как время. В результате сравнение проходит некорректно. В чем причина? Неужели при каждом обращении к Cells(i,j) нужно использовать явное преобразование типов. Ведь это сильно утяжеляет код, замедляет исполнение.
При обращении Cells(i,j) к ячейкам одного листа в одном операторе сравнения VBA воспринимает данные в одном случае как double в другом как string, хотя ячейки уже отформатированы как время. В результате сравнение проходит некорректно. В чем причина? Неужели при каждом обращении к Cells(i,j) нужно использовать явное преобразование типов. Ведь это сильно утяжеляет код, замедляет исполнение. bokr
Ответить
Сообщение При обращении Cells(i,j) к ячейкам одного листа в одном операторе сравнения VBA воспринимает данные в одном случае как double в другом как string, хотя ячейки уже отформатированы как время. В результате сравнение проходит некорректно. В чем причина? Неужели при каждом обращении к Cells(i,j) нужно использовать явное преобразование типов. Ведь это сильно утяжеляет код, замедляет исполнение. Автор - bokr Дата добавления - 11.07.2019 в 14:04
sboy
Дата: Четверг, 11.07.2019, 14:34 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Добрый день. Если в ячейке текст, то не важно какой формат данных Вы поставили
Добрый день. Если в ячейке текст, то не важно какой формат данных Вы поставили sboy
Яндекс: 410016850021169
Ответить
Сообщение Добрый день. Если в ячейке текст, то не важно какой формат данных Вы поставили Автор - sboy Дата добавления - 11.07.2019 в 14:34
InExSu
Дата: Суббота, 13.07.2019, 23:49 |
Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация:
96
±
Замечаний:
0% ±
Excel 2010, 365
Привет! Надеюсь не сильно замедлит. Замените [vba]Код
If wsData.Cells(N, i).Value < wsData.Cells(N - 1, 7).Value Then
[/vba] на [vba]Код
If wsData_Cells_Less(wsData, N, i) Then
[/vba] Добавьте в код [vba]Код
Function wsData_Cells_Less( _ ws As Worksheet, _ N As Long, _ i As Long) _ As Boolean ' Тестом НЕ покрыто ' Dim v1 As Variant, v2 As Variant With ws v1 = .Cells(N, i).Value v2 = .Cells(N - 1, 7).Value End With If CDate(v1) < CDate(v2) Then wsData_Cells_Less = True End If End Function
[/vba]
Привет! Надеюсь не сильно замедлит. Замените [vba]Код
If wsData.Cells(N, i).Value < wsData.Cells(N - 1, 7).Value Then
[/vba] на [vba]Код
If wsData_Cells_Less(wsData, N, i) Then
[/vba] Добавьте в код [vba]Код
Function wsData_Cells_Less( _ ws As Worksheet, _ N As Long, _ i As Long) _ As Boolean ' Тестом НЕ покрыто ' Dim v1 As Variant, v2 As Variant With ws v1 = .Cells(N, i).Value v2 = .Cells(N - 1, 7).Value End With If CDate(v1) < CDate(v2) Then wsData_Cells_Less = True End If End Function
[/vba] InExSu
Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
Ответить
Сообщение Привет! Надеюсь не сильно замедлит. Замените [vba]Код
If wsData.Cells(N, i).Value < wsData.Cells(N - 1, 7).Value Then
[/vba] на [vba]Код
If wsData_Cells_Less(wsData, N, i) Then
[/vba] Добавьте в код [vba]Код
Function wsData_Cells_Less( _ ws As Worksheet, _ N As Long, _ i As Long) _ As Boolean ' Тестом НЕ покрыто ' Dim v1 As Variant, v2 As Variant With ws v1 = .Cells(N, i).Value v2 = .Cells(N - 1, 7).Value End With If CDate(v1) < CDate(v2) Then wsData_Cells_Less = True End If End Function
[/vba] Автор - InExSu Дата добавления - 13.07.2019 в 23:49