有没有一种方法可以根据用户输入更改vba范围声明?

时间:2019-08-21 14:00:03

标签: vba variables range

我为我所在的学校建立了自动评分工具。我正在努力构建各种版本的测试。我想知道是否可以根据我的GUI表格中的下拉菜单,而不是为每个问题的答案指向指向特定范围的新函数,而可以对范围声明的第一部分进行更改。下面的例子

Function q1(i as range) as Integer
''''For each ans in range.("Sheet2!A2:A3").cells 

'is there a way to make the Sheet2! portion a variable that I can change based on user input???

''''''''if (userinput.Value = ans.Value) then

''''''''''''j = j + 1 and so on

我希望用户可以选择版本1,并将变量的值更改为“ Sheet2!A2:A3”(我只希望更改Sheet2!部分,而不希望更改单元格引用)

非常感谢您的帮助:D

2 个答案:

答案 0 :(得分:0)

您可以使用Application.InputBox()要求用户选择一个范围:

Dim r As Range, ws as worksheet
Set r = Application.InputBox("Pls select a range", , , , , , , 8)
Set ws = r.Parent

答案 1 :(得分:0)

取决于下拉菜单中可用的值,Select Case可能是将用户输入分配给某些工作表的一种简便方法。如果您有很多东西,这个选项就不会那么讨人喜欢了。

我假设Sheet("Sheet?").Range("A1")是下拉框的值所在的位置。当该单元格发生更改时,您也可以自动触发该事件,但如果适用,则使用idk


Sub Jeeped()

Dim Version As String
Dim Bank As String

Version = Sheet("Sheet?").Range("A1")

Select Case Version
    Case "Version 1"
        Bank = "Sheet1"
    Case "Version 2"
        Bank = "Sheet2"
    Case "Version 3"
        Bank = "Sheet3"
    Case Else
        Exit Sub
End Select

For Each Ans In Sheets(Bank).Range("A2:A3")
    '......
    '......
Next Ans

End Sub

我还可以看到映射到此处工作的数组的版本数组以及简单的VLOOKUP

相关问题