如何在VBA中访问Range对象的特定值?

时间:2017-11-29 16:46:14

标签: excel excel-vba vba

好的,

所以这是我用于统计分析的代码片段。我需要将变量“Freq”定义为范围,因为我使用不同的excel公式来加速代码,如AVERAGE(),STEYX(),DEVSQ(),FORECAST()等。我正在使用VBA来做因为我需要快速迭代大量数据,并且仅使用Excel公式感觉有限。

dim Freq as Range
dim sht as Worksheet
dim n as integer

n = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row - 1
Set sht.ThisWorkbook.ActiveSheet
Set Freq = sht.Range("D" & 2 & ":D" & n + 1)

稍后在我的代码中,我想验证“Freq”变量中的任何值是高于还是低于某个值。我知道如何通过检查范围中的每个单元格来执行此操作,或者为该范围指定一个数组,但我觉得为相同数据范围设置第二个变量是还原剂和低效率。

当我在VBA中查看“Freq”对象时,我看到一个Value2(x,1),x是介于1和n之间的任何数字,但我还没有找到一种方法来访问这个值。我试过了:

tmp=Freq.Value(1)
tmp=Freq.Value(1,1)
tmp=Freq.Value2(1)
tmp=Freq.Value2(1,1)

但这都不起作用。

所以,基本上我的问题是:如何在VBA中访问Range对象的特定值?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

Range.Value接受一个可选参数,因此Freq.Value(1,1)语法不正确。

要省略可选参数,每个Rory执行`Freq.Value()(1,1)。

或者,将Freq.Value投射到变体数组:

Dim myArray as Variant
myArray = Freq.Value
MsgBox myArray(1,1)

ExcelRangeValueType如下所示,省略时将使用默认参数值:

xlRangeValueDefault         10  Default. If the specified Range object is 
                                empty, returns the value Empty (use the 
                                IsEmpty function to test for this case). If 
                                the Range object contains more than one cell, 
                                returns an array of values (use the IsArray 
                                function to test for this case).
xlRangeValueMSPersistXML    12  Returns the recordset representation of the 
                                specified Range object in an XML format.
xlRangeValueXMLSpreadsheet  11  Returns the values, formatting, formulas, 
                                and names of the specified Range object in 
                                the XML Spreadsheet format.

相关:https://fastexcel.wordpress.com/2017/03/13/excel-range-valuevaluetype-what-is-this-parameter/