автофильтр с использованием критериев двойной переменной vba

Поэтому мне нужно отфильтровать все цены, меньшие или равные значению ячейки (6,3) (которое равно 50,60).

Это мой код, но по какой-то причине он просто не работает для двойных значений. Например, если я изменю значение ячейки (6.3) с 50,60 на 50, код будет работать нормально.

Какие-нибудь советы?

Sub cost()

Dim price As Double

'Application.DecimalSeparator = "."
'Application.ThousandsSeparator = ","
'Application.UseSystemSeparators = True

Range("B2:C2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "0.00"

price = Cells(6, 3).Value

 Range("A1:C1").Select
 Selection.AutoFilter
 ActiveSheet.Range("$A$1:$C$12").AutoFilter Field:=1, Criteria1:="1"
 ActiveSheet.Range("$A$1:$C$12").AutoFilter Field:=3, Criteria1:="<=" & price
End Sub

Это мой рабочий лист:

hour consumption    price
1    20,50          0,00
1    50,10          1,30
1    70,60          1,50
1    10,70         30,60
1    15,90         50,60
1    30,80         56,20
1    60,30         60,30
2    45,20          0,00
2    80,60         11,30
2    50,70         20,40

Спасибо за помощь


person pedropg    schedule 01.11.2014    source источник
comment
Не могу сказать без дополнительного тестирования, но интерпретирует ли VBA ваш десятичный разделитель по желанию, поэтому 50,60 интерпретируется как 50 десятичный 6 ? Какие у вас настройки страны/языка?   -  person Ron Rosenfeld    schedule 01.11.2014
comment
Мои настройки страны/языка — португальский (PT). Я думаю, проблема в том, что VBA неправильно интерпретирует значение ячеек (6,3). Но, например, если я тестирую msgbox(price), он дает мне правильное значение. Я уже пытался изменить Decimal.Separator с , на ., но это тоже не сработало:\   -  person pedropg    schedule 02.11.2014
comment
Я вижу, у вас есть решение. Боа сорте   -  person Ron Rosenfeld    schedule 02.11.2014


Ответы (1)


С этой линейкой у меня работает. Все, что вам нужно сделать, это преобразовать price в string, прежде чем объединить его в "<=".

ActiveSheet.Range("$A$1:$C$12").AutoFilter Field:=3, Criteria1:="<=" & Str(price)
person Károly Szommer    schedule 01.11.2014
comment
Károly Szommer, спасибо, чувак!! Вот и все, теперь все работает отлично :) - person pedropg; 02.11.2014