个人资料

跳过导航链接首页 > 博客列表 > 博客正文

vba中获取单元格中二维数组数据

分类:

range对象的value2属性即为表格区域的数组,类型为object[,]

VBA代码:

Function vb_mat_add(matA As Range, matB As Range)

    Dim addin As Variant
    Set addin = CreateObject("MathNetExcel.Functions")
    vb_mat_add = addin.mat_add2(matA.Value2, matB.Value2)
    
End Function

如果传出处理.比如上例中传出给com组件作为参数,需要注意vb中数组是从1开始而不是从0开始.

也就是object[,] 索引是从 object[1~n,1~n] 而不是 object[0~n-1,0~n-1]

因此在com组件中进行一步转换

        public static double[,] o2d(object[,] obj2) {

            int x = obj2.GetLength(0);
            int y = obj2.GetLength(1);
            double[,] d2 = new double[x, y];
          
            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    d2[i, j] = Convert.ToDouble(obj2[i + 1, j + 1]);
                    
                }
            }
            return d2;
        }
将表格中内容转换为 double. 根据实际类型进行转换.如果不确定类型都转换为字符串数组是万能的


songshizhao
最初发表2020/7/25 23:12:11 最近更新2020/7/25 23:14:25 1805
为此篇作品打分
10
   评论