使用VBA从Excel中的其他工作表获取值

你好,即时通讯新的Excel中,我有一些问题,从其他工作表获取值。

我在excel(sheet2)中有一些值,例如:

ABCD - - - - 1 | 2 5 9 12 2 | 5 8 4 5 3 | 3 1 2 6 

我正在使用sheet2中的这个值,我想在sheet1中得到结果。 当即时通讯使用我的代码在sheet2我得到正确的答案,但即时通讯尝试使用它在不同的表我得到的值的结果对应于当前表单元格,而不是sheet2。

  • 我想得到第4行每列的总和,我设法做到这一点,但我只能在sheet2中使用它。

即时通讯使用“与Application.WorksheetFunction”,我想改变,以获取sheet2的值。

你能帮我解决这个问题,以及如何将sheet2设置为激活页面。

我希望我的问题很清楚。

谢谢

尝试

  ThisWorkbook.Sheets("name of sheet 2").Range("A1") 

访问表单2中的范围,无论您的代码位于哪个表单或哪个表单处于活动状态。 要使工作表2成为活动工作表,请尝试

  ThisWorkbook.Sheets("name of sheet 2").Activate 

如果你只是需要在不同的表中的一行的总和,根本不需要使用VBA。 在表1中input一个像这样的公式:

 =SUM([Name-Of-Sheet2]!A1:D1) 

那将是(对你来说非常具体的例子)

 ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value=someval 

要么

 someVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value 

所以得到一个F1点击并阅读有关工作表集合,其中包含工作表对象,其中有一个单元集合,持有单元对象…

 Sub TEST() Dim value1 As String Dim value2 As String value1 = ThisWorkbook.Sheets(1).Range("A1").Value 'value from sheet1 value2 = ThisWorkbook.Sheets(2).Range("A1").Value 'value from sheet2 If value1 = value2 Then ThisWorkbook.Sheets(2).Range("L1").Value = value1 'or 2 End Sub 

这将比较两个工作表单元格值,如果它们匹配,则将表格2中的值放在列L中。

SomeVal = ActiveWorkbook.worksheets( “Sheet 2中”)。细胞(AROW,ACOL)。价值

不工作。 但是下面的代码只对我有效。

SomeVal = ThisWorkbook.Sheets(2).cells(aRow,aCol).Value

在需要来自工作表的数据之前,请尝试使用工作表激活命令:

 objWorkbook.WorkSheets(1).Activate objWorkbook.WorkSheets(2).Activate