了解VBA excel中的工作表/单元格引用

时间:2018-04-18 16:16:27

标签: excel-vba vba excel

所以我移动了一个带有一些相当广泛的编码的宏按钮,因此用户不会意外地点击它。基本上,宏将第一页上的信息发送到摘要工作簿。我认为我可以只移动按钮,因为寻找所需变量的代码的第一部分选择了我实际想要获取信息的工作表。但是,宏仍然会查看activeworksheet以获取变量。我可以通过简单地将工作表引用与范围引用一起来获取必要的信息来解决这个问题,但我认为我不需要这样做。有没有办法只引用工作表一次,以便代码查找工作表中我需要信息的所有信息?

第一个代码 - 从附加到的任何工作表中获取信息,在本例中为sheet2:

 Worksheets("Sheet1").Select
    AgentName = Range("C2")
    'Set IncidentReport = Range("d1:f1")
    County = Range("d1")
    Idate = Format(Range("e1"), "yyyymmdd")
    LogNum = Format(Range("f1"), "000")
    IncidentReport = County & Idate & LogNum

此代码从正确的工作表中提取信息,但我有很多变量,我希望有更好的方法:

Worksheets("Sheet1").Select
    AgentName = Worksheets("Sheet1").Range("C2")
    'Set IncidentReport = Range("d1:f1")
    County = Worksheets("Sheet1").Range("d1")
    Idate = Format(Worksheets("Sheet1").Range("e1"), "yyyymmdd")
    LogNum = Format(Worksheets("Sheet1").Range("f1"), "000")
    IncidentReport = County & Idate & LogNum

2 个答案:

答案 0 :(得分:0)

您可以使用With语句 - 记下范围前面的点。但是,你的第一个代码应该工作我想到了 - 你有多个工作簿在运行吗?

With Worksheets("Sheet1")
    AgentName = .Range("C2")
    County = .Range("d1")
    Idate = Format(.Range("e1"), "yyyymmdd")
    LogNum = Format(.Range("f1"), "000")
    IncidentReport = County & Idate & LogNum
end with

答案 1 :(得分:0)

是的,使用with阻止:

With Worksheets("Sheet1")
    AgentName = .Range("C2")
    'Set IncidentReport = Range("d1:f1")
    County = .Range("d1")
    Idate = Format(.Range("e1"), "yyyymmdd")
    LogNum = Format(.Range("f1"), "000")
    IncidentReport = County & Idate & LogNum
End With

with区块内,您可以使用.引用您的对象,以便object.a成为.