我正在尝试使用以下语句将范围从用户窗体中的RefEdit控件传递到VBA中的数组:
y0 = Range(RefEdit1.value)
我认为通过使用.Value
属性,这将排除用户在RefEdit1中所做的选择中的格式化,而原始的,未格式化的值将存储在y0中。但是,这不会发生:当我测试它并选择一个具有货币值的范围时,格式存储在y0中,当然,这对于将来的计算是有问题的。
我什至尝试过:
y0 = Range(RefEdit1.value).value
但是那也不起作用。感谢您的协助。
感谢您的回复。请参见下面的屏幕截图。使用RefEdit1选择货币格式为M2:M21的数值。注意功能栏中打印的实际值(红色框中突出显示):这些是我要存储在y0中的值(原始,无格式,未环绕的值):
代码如下:
这是打印到P35的值:
它不仅保留了不需要的格式,而且对值进行了四舍五入。有任何想法吗?重要说明:该特定应用程序的标准功能是用户可以选择包括列名称。因此,此选择中的前导元素通常(并非总是)是字母。这可能是问题的有效因素吗?
==============================
根据Michal的最新回复,我尝试了以下方法,但问题仍然存在。
非常感谢您提供进一步的帮助。
答案 0 :(得分:0)
不确定是否能满足您的需求,但似乎可行:
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
答案 1 :(得分:0)