【问题标题】:Switching from Range to Array and Back in a VBA Function在 VBA 函数中从范围切换到数组并返回
【发布时间】:2012-06-29 10:25:45
【问题描述】:

有很多问题,也有很多关于 VBA 中范围/数组转换的回复。我一直无法找到有效的答案,所以我真的很感激一些帮助。

下面是我想要做的:

    Function RangeToArrayToRange(inputRange As Range) As Range
        Dim inputArray As Variant
        inputArray = inputRange
        'operations on inputArray'
        '...'
        Dim outputRange As Range
        outputRange = inputArray
        Set RangeToArrayToRange = outputRange
    End Function

提前感谢您的帮助!

【问题讨论】:

  • 回答,然后重新阅读您的问题后,我现在不清楚您的需求。也许您可以尝试用文字来解释它(不是代码,因为这似乎是您的问题所在)。你不能将变量数组转换为范围,如果这是你想要做的......
  • 我不确定您在问什么,但请记住在每个范围内都使用“Set”,例如 Set outputRange = inputArray
  • 请添加更多关于您想要做什么以及您正在使用什么(即单行、单列、多行/列等)的详细信息

标签: arrays excel vba range


【解决方案1】:

如果 outputRange 是要填充的范围的左上角单元格:

outputRange.Resize(Ubound(inputArray,1), _
                   Ubound(inputArray,2)).Value = inputArray

编辑:我认为这就是你想要做的

Function RangeToArray(inputRange As Range) As Variant
   Dim inputArray As Variant
   inputArray = inputRange.Value

   'operations on inputArray
   '...'

   RangeToArray = inputArray
End Function

您可以在工作表上将其用作用户定义函数 (UDF)

  1. 选择一个与“inputRange”尺寸相同(行/列数相同)的范围
  2. 在公式栏中输入“=RangeToArray([yourinputrange])”,然后按 Ctrl+Shift+Enter 将公式输入为“数组公式”

这假设您没有在函数中更改 inputArray 的尺寸(上限/下限)。

【讨论】:

  • 感谢您的快速回复,蒂姆。我实施了您的建议,但我仍然收到#VALUE!错误。 (编辑:我是 StackOverflow 的新手,所以我无法在这里很好地添加代码)
  • 查看我对您的问题的评论:如果您添加了对您试图通过代码实现的目标的描述,它将改善您的问题。您收到 #VALUE 错误让我认为您正在尝试将您的函数用作工作表上的 UDF。如果是这种情况,您只需返回 inputArray(作为 Variant)并将公式作为数组公式输入到与输入范围相同维度的范围内。
  • 谢谢蒂姆!下次我一定会更具体。
猜你喜欢
  • 2016-10-13
  • 2015-01-06
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多