我正在使用命名范围(主要在工作表2中),并且正在在名为“ Signups”的工作表中创建摘要。我主要是剪切和粘贴在程序其他部分中起作用的代码。由于某些原因,VBA不会在工作表2中选择范围。
在下面的代码中,“ SignupPairs”是工作表“ Signups”中的范围,“ NewMem”是“ Sheet2”中的范围。
''''''''''
MsgBox "SignupPairs 2,1 " & Range("SignupPairs")(2, 1)
Range("SignupPairs")(2, 1).Select
MsgBox "NewMem 1,1 " & Range("NewMem")(1, 1)
'Sheets("Sheet2").Range("NewMem")(1, 1).Select 'Doesn't work.
Range("NewMem")(1, 1).Select
''''''''''
已添加前四行用于调试目的。最后一行是使我停顿下来的那句话。第四行试图具体说明我要使用的工作表;它没有用。 MsgBox正确报告“ SignupPairs”和“ NewMem”中单元格的内容,但我不能选择NewMem(1,1)来执行“ Range(Selection,Selection.End(xlDown))。Rows.Count。< / p>
加分:有人在VBA上有很好的入门指南或手册的链接或参考,因此我可以教育自己,而不必问这些简单的问题? VBA for Dummies只是让我陷入了混乱。
P.S。在VBA编辑器中单击“选择”上的“ F1”,将我带到选择案例的页面,这似乎是死路一条。
答案 0 :(得分:1)
由于您是VBA的新手,因此我强烈建议您始终在代码中写下您打算做的注释。这将对帮助者和您的未来有所帮助。
我不确定您要对摘要表中的数据做什么。我建议您创建对摘要表的引用,然后可以使用命名范围中的数组。
在这里,您可以将“注册对”和“新内存”都放入数组中,然后味精将您正在查看的内容装箱(但我认为您想匹配它们或做其他事情)
Sub doSomethingWithSignups()
Dim ws As Worksheet, signUps As Variant, newMems As Variant
' these arrays will have whatever data you have identified in the Named Ranges
signUps = ThisWorkbook.Names("SignupPairs").RefersToRange.Value2
newMems = ThisWorkbook.Names("NewMems").RefersToRange.Value2
' you can do anything with these arrays now
MsgBox("SignupPairs 2,1 " & signUps(2, 1))
MsgBox("NewMem 1,1 " & newMems(1, 1))
End Sub