VBA在1个工作簿中检查标准,在另一个工作簿中input值

我正在努力弄清楚如何让代码做我想做的事情,我尽可能多地写了我能在网上find的东西,但是对于某些方面,我不知道写什么。

代码的目的

在每个名称旁边的数字“1”选中“电子表格2017”。 如果有“1”,则在名为“date模板”的另一个工作簿(与“电子表格2017”中的名称相同的行)中的一行中的多个单元格中input值

关于我想要做什么的细节

  1. A列和B列名(A),姓(B)
  2. 通过列C检查名称旁边的“1”
  3. 如果有1,则切换到工作簿“date模板”
  4. 在列A中find相同的名称,并将值7.2(col B),3.9(col C)和74.2(col D)。

这是代码的基本骨干,将来我会考虑添加更多的条件,例如D列为1,C列为1。所以也许case函数会更好,那么它会更容易在未来添加。 我不知道哪个更好。

在下面的代码中,我只写了它来扫描列B中的姓氏,因为没有重复。 但将来可能会有同姓的姓名,在这种情况下,名字也必须被读取。 这是我如何检查两个困惑。

如果可以将名称列表复制到“date模板”,然后在满足标准的情况下input这些值,则可以获得奖励。 因为此刻我手动input名称到“date模板”电子表格上。

Sub Summary() Dim wb1 As Workbook Dim Sht As Worksheet Dim Rng As Range Dim wb2 As Workbook Dim cell As Range Dim ws As Worksheet Set wb1 = Workbooks("Works template.xlsm") Set wb2 = Workbooks("Spreadsheet 2017") Set Sht = wb1.Worksheets("Template") Set ws = wb2.Worksheets("January") Set Rng = ws.Range("B7:B" & Sht.Cells(Sht.Rows.Count, "B").End(xlUp).Row) For Each cell In Rng If cell.Offset(0, 2).Value = "1" Then Sht.Cells.Offset(0, 3).Value = "7.2" '<--- This is where I get the new error, "Application-defined or object-defined error" Sht.Cells.Offset(0, 2).Value = "3.9" Sht.Cells.Offset(0, 6).Value = "74.2" End If Next End Sub 

非常感谢!

Sht.Cells中的所有单元格,因此您无法在此上使用.Offset()

 Sub Summary() Dim wb1 As Workbook Dim Sht As Worksheet Dim Rng As Range Dim wb2 As Workbook Dim cell As Range Dim ws As Worksheet Set wb1 = Workbooks("Works template.xlsm") Set wb2 = Workbooks("Spreadsheet 2017") Set Sht = wb1.Worksheets("Template") Set ws = wb2.Worksheets("January") Set Rng = ws.Range("B7:B" & Sht.Cells(Sht.Rows.Count, "B").End(xlUp).Row) For Each cell In Rng If cell.Offset(0, 1).Value = "1" Then sht.Range(cell.address).Offset(-2, 0).Offset(0, 0).Value = "7.2" sht.Range(cell.address).Offset(-2, 0).Offset(0, 1).Value = "3.9" sht.Range(cell.address).Offset(-2, 0).Offset(0, 2).Value = "74.2" End If Next End Sub