Передача значений из элемента управления RefEdit в пользовательской форме в массив вариантов - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь передать диапазон от элемента управления RefEdit в пользовательской форме в массив в VBA, используя такие выражения, как:

y0 = Range(RefEdit1.value)

Я подумал, что используя свойство .Value, это исключит форматирование излюбой выбор, сделанный пользователем в RefEdit1, и только необработанные, неформатированные значения будут сохранены в y0.Однако этого не происходит: когда я проверяю его и выбираю диапазон со значениями валюты, форматирование сохраняется в y0 и, конечно, проблематично для будущих вычислений.

Я даже пробовал это:

y0 = Range(RefEdit1.value).value

Но это тоже не сработало.Любая помощь приветствуется.

=====================================

Спасибоза ваш ответ.Смотрите скриншоты ниже.Числовые значения в формате валюты в M2: M21 выбираются с помощью RefEdit1.Обратите внимание на фактическое значение, напечатанное на функциональной панели (выделено в красном поле): это значения, которые я хочу сохранить в y0 (необработанные, неотформатированные значения UNROUNDED):

enter image description here

Вот код:

enter image description here

А вот значения, которые печатаются в P35:

enter image description here

Мало того, что он сохранил нежелательное форматирование, он округлил значения.Есть идеи?ВАЖНО: это стандартная функция этого конкретного приложения, что пользователь имеет возможность включить имя столбца.Поэтому ведущим элементом в этом выборе часто (не всегда) является алфавитный.Может ли это быть оперативным фактором в проблеме?

==============================

Согласно последнему ответу Михала, я попробовал следующее, но проблема все еще сохраняется.

enter image description here

enter image description here

Любая дальнейшая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

После дальнейших исследований я обнаружил, что использование свойства .Value2 вместо .Value решает эту проблему:

enter image description here

0 голосов
/ 21 декабря 2018

Не уверен, подходит ли он вашим потребностям, но, похоже, он работает:

Option Base 1

Private Sub CommandButton1_Click()

    Dim y0() As Double
    Dim rng As Range

    Set rng = Range(RefEdit1)

    ReDim y0(rng.Count)

    For a = 1 To rng.Count
       y0(a) = rng.Item(a)
    Next

    Range("H2").Resize(rng.Count, 1) = Application.Transpose(y0)

End Sub
...