gpt4 book ai didi

Excel-VBA : How to get size of selected array in vba code?

转载 作者:行者123 更新时间:2023-12-04 00:46:23 26 4
gpt4 key购买 nike

我正在用 excel 编写一个 vba 函数,它接受一个奇数大小的空方阵并用数字填充它。但是,在调用函数之前,我无法检索它在电子表格中动态选择的数组的大小。我该怎么做?

谢谢!

最佳答案

将 Range 对象传递到您的函数中并查看值:

Public Function WhatIsTheMatrix(SourceRange as Excel.Range) As Variant

Dim arrSource as Variant
Dim arrOutPut as Variant

Dim i As Long, j As Long

arrSource = SourceRange.Value2

i = Ubound(arrSource, 1)
j = Ubound(arrSource, 2)

' The lower bounds of an array obtained from a range are always 1

' code
' more code
' even more code

WhatIsTheMatrix = arrOutPut

End Function

现在你有两个问题:

  1. 你原来的问题,通过检查 i 和 j 解决了

  2. 一种特殊情况,其中单个单元格范围的值不是数组变体

所以你需要这个:

If SourceRange.Cells.Count = 1 Then
Redim arrSource(1 to 1, 1 To 1)
arrSource(1,1) = SourceRange.Value2
Else
arrSource = SourceRange.Value2
End If

任何其他业务:

有一个无法识别的假设,即:您认为您可以传入当前的 Application.Selection,它始终是一个范围。也可以是控件,也可以是图表,也可以是图表系列……

...不,您不能指望它会引发类型不匹配的运行时错误。是的,您调用了 Option Explicit,是的,您输入了 SourceRange as Excel.Range,您的母亲、教区牧师和太平绅士看着您这样做;尝试在午夜后在一 block 看起来险恶的岩石上牺牲一些东西,也许 VBA 运行时会相信你。

所以你还需要这个:

If Not TypeOf SourceRange Is Excel.Range Then
' Raise an error or Exit Sub
End If

认为这就是所有的惊喜。除非你喜欢奇异的东西和尴尬的问题,比如“这个范围是计算出来的吗?”

关于Excel-VBA : How to get size of selected array in vba code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com