我为我所在的学校建立了自动评分工具。我正在努力构建各种版本的测试。我想知道是否可以根据我的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
答案 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