Страницы: 1
RSS
Преобразование типов
 
Можно ли преобразовать тип данных в конструкции case?
Нужно преобразовать несколько значений из типа string в тип данных double.
Как это сделать?
Изменено: Apoc - 04.01.2019 18:17:55
 
Цитата
Apoc написал:
Нужно в цикле Case
Это что за цикл такой? )
Где Ваш файл-пример?
 
извините, а что Вы хотите сделать?
(можете обьяснить так, чтобы понимал еще кто-то, а не только Вы)
и параллельно думайте над названием темы. "преобразование типов" по местным правилам является недопустимым названием
Изменено: Ігор Гончаренко - 04.01.2019 17:59:45
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Код
Public Function ШКАЛА(ByVal X As Double) As String
    Dim P As Double
    P = X
    Select Case P
        Case -1 To -0.1
            ШКАЛА = "-1..0"
        Case 1 To 1.5
            ШКАЛА = 2.5
        Case 4 To 6
            ШКАЛА = 10
        Case 20 To 40
            ШКАЛА = 60
        Case 55 To 105
            ШКАЛА = 160
    End Select
End Function

Нужно значения 2,5 перевести в тип данных double

Изменено: Apoc - 04.01.2019 18:16:00
 
И где тут цикл?
Apoc,  код следует оформлять соответствующим тегом. Ищите такую кнопку (см. скрин) и исправьте своё сообщение.
 
Исправил. Не в цикле, а в конструкции выбора case.
Изменено: Apoc - 04.01.2019 18:20:15
 
может так:
Код
Public Function ШКАЛА(ByVal P As Double) As Double
  Select Case P
  Case -1 To -0.1
    ШКАЛА = -1
  Case 1 To 1.5
    ШКАЛА = 2.5
  Case 4 To 6
    ШКАЛА = 10
  Case 20 To 40
    ШКАЛА = 60
  Case 55 To 105
    ШКАЛА = 160
  End Select
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
нужно с сохранением строчки
Код
ШКАЛА = "-1..0"
 
Значение "-1..0" не является числом.
 
Поэтому нужно чтобы всё выводилось со значением типа string, кроме одного числа который необходимо преобразовать в тип double. Возможно ли такое?
Изменено: Apoc - 04.01.2019 18:27:14
 
Может наоборот? - все Double, кроме одного.
 
Можно и так.
 
Код
Public Function ШКАЛА(P)
  Select Case P
  Case -1 To -0.1
    ШКАЛА = "-1..0"
  Case 1 To 1.5
    ШКАЛА = 2.5!
  Case 4 To 6
    ШКАЛА = 10#
  Case 20 To 40
    ШКАЛА = 60@
  Case 55 To 105
    ШКАЛА = 160&
  End Select
End Function

Sub Test()
  Dim A, ar, i&
  ar = Array(-0.5, 1, 5, 35, 60)
  For i = LBound(ar) To UBound(ar)
    A = ШКАЛА(ar(i))
    MsgBox "P = " & ar(i) & "   А = " & A & "   type of A = " & TypeName(A)
  Next
End Sub
выполните Test
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Привет!
вместо
Код
    Dim P As Double
    P = X
    Select Case P
Хватит
Код
    Select Case X
То, что вернёт функция Вы можете преобразовывать как пожелаете. В сообщении 13 тип возвращаемого значения явно не указан, но мы то с Вами знаем, что неуказанный тип будет Variant.
Если, для наглядности в сообщении 13 заменить MsgBox на Debug.Print, то увидим, что будет возвращать Ваша функция:
P = -0,5   À = -1..0   type of A = String
P = 1   À = 2,5   type of A = Single
P = 5   À = 10   type of A = Double
P = 35   À = 60   type of A = Currency
P = 60   À = 160   type of A = Long
Скрытый текст
Сравнение прайсов, таблиц - без настроек
Страницы: 1
Наверх