基于用户输入的动态范围

时间:2018-04-02 15:12:24

标签: excel-vba vba excel

在excel中我正在创建一个动态数组。 A列包含一个密钥,使用数字1-7。列B-K包含字符串。该数组是从1到最后一行循环生成的,每个循环都有一个if语句,检查该键是否在右侧行。在if语句中,列B的值被添加到数组中。我有这方面的工作代码,但是我需要获得B列中值的动态范围,因此代码将具有相同的结果,除非它适用于任何行,基于用户输入,而不仅仅是列B.在宏的开头有一个包含所有列标题的单选按钮的动态用户表单列表。用户选择的列标题(字符串值)存储在" SelectedOption"中。

以下是我目前的代码,任何帮助制作"范围(" B"& i)"基于用户输入的部分动态将不胜感激。

For i = 1 To lRow
If Range("A" & i) = 4 Then
     ArrayTest(UBound(ArrayTest)) = Range("B" & i) 'this needs to be a dynamic range to get correct values in array
     ReDim Preserve ArrayTest(UBound(ArrayTest) + 1)
End If
Next i

1 个答案:

答案 0 :(得分:0)

通过使用单元格(行,列)声明新范围来解决。完成的代码如下:

For i = 1 To lRow
If Range("A" & i) = 4 Then
     Set arrayRange = Cells(i, SelectedColumn)
     ArrayTest(UBound(ArrayTest)) = arrayRange
     ReDim Preserve ArrayTest(UBound(ArrayTest) + 1)
End If
Next i